Nginx基础二(配置语法,Nginx变量)

一、http请求

先补充一点 http 知识


Nginx基础二(配置语法,Nginx变量)_第1张图片
http请求.png
  • yum install -y curl
    curl 可以理解成是一个浏览器,只是不能看到页面,看到的是http请求的信息。
  • curl http://www.baidu.com
    使用curl请求baidu地址,可以看到返回的html代码(即服务端返回的响应正文)
  • curl -v http://www.baidu.com >/dev/null
    (">/dev/null" 表示将返回的内容重定向到linux空设备上)
    执行上述命令,可以看到详细信息,> 标注的是request信息,包括请求行,请求头部,请求数据,< 标注的是response信息,包括状态行,信息报头,响应正文。

二、Nginx主配置etc/nginx/nginx.conf详解

执行vi etc/nginx/nginx.conf可以看到以下配置内容

user nginx ;     
worker_processes 4;             
error_log   /var/log/error.log  warn;    
pid        /var/run/nginx.pid;     

events {
  worker_connections 1024;
}

http {
  include   /etc/nginx/mime.types
  default_type  application/octet-stream;

  log_format main  '$remote_addr - $remote_user [$time_local] "$request" '
                   '$status $body_bytes_sent  "$http_referer" '
                   '"$http_user_agent"  "$http_x_forwarded_for" '

  access_log  /var/log/nginx/access.log main;
  sendfile      on;
   #tcp_nopush   on;

  keepalive_timeout 65;
  #gzip on;
  include /etc/nginx/conf.d/*.conf;
}

(1) user nginx 设置nginx 服务的系统使用用户, 默认即是nginx,可不设置
(2) worker_processes 4; 工作进程数, 一般设置为和cpu核数一样
(3) error_log /var/logs/error.log warn; 错误日志存放目录(主要用于Nginx处理http请求错误的状态,以及Nginx本身服务运行错误的状态 ), warn表示错误日志的级别
(4)pid /var/run/nginx.pid; 进程pid存放位置
(5) events 下的worker_connections : 每个进程允许的最大连接数量(最大设至65535),use: 工作进程数

http下的一些配置及其意义

(1) include /etc/nginx/mime.types; 文件扩展名与文件类型映射表
(2) default_type application/octet-stream; 默认文件类型
(3) log_format用来设置日志格式,只能配置在http模块下。其中$remote_addr$remote_addr$开头的都是Nginx中的变量,通过一些符号连接在一起,组成nginx的access_log日志格式。

  • $remote_addr 客户端地址
  • $remote_user 客户端请求Nginx认证的用户名,如果默认没有开启认证模块,将不会记录
  • $time_local Nginx时间
  • $request request头请求行
  • $status response返回的状态码
  • $body_bytes_sent 服务端响应给客户端的body信息的大小
  • $http_referer HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理
  • $http_user_agent http头信息的一部分,
  • $http_x_forwarded_for 简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。它不是RFC中定义的标准请求头信息

(4) access_log指定日志文件的存放路径、格式和缓存大小,主要依赖于log_format的配置,记录到每次http请求的访问状态,后面的main与log_format main中的main是对应的,表示将日志按log_format main中的main的格式要求记录到access_log里
(5) sendfile on; 开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来 输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置 为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常 把这个改成off。
(6)tcp_nopush on; 防止网络阻塞
(7) autoindex on; 开启目录列表访问,合适下载服务器,默认关闭。
(8)keepalive_timeout 65; 长连接超时时间,单位是秒
(9)gzip on; 开启gzip压缩输出
(10) include /etc/nginx/conf.d/*.conf; nginx读完etc/nginx/nginx.conf后,同时会读etc/nginx/conf.d/下所有的.conf文件(默认/etc/nginx/conf.d目录下只有一个default.conf文件)

三、配置文件 etc/nginx/conf.d/default.conf 详解

server{
  listen 80;
  server_name localhost;

  location / {
    root /usr/share/nginx/html;
    index index.html index.htm;
  }

  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root /usr/share/nginx/html;
  }
}

(1) listen 该server 监听的端口
(2) server_name 服务名称(域名)
(3) location 一个server 可以有多个location,。
root当某一个server里面没有其他的路径可以访问时 ,会默认访问该配置目录下的文件。
index定义首页默认访问的是哪个文件, 如果index.html没有找到就会去找index.htm。
ls /usr/share/nginx/html可以看到里面有两个50x.html 和index.html两个文件,如下图所示:

50x.html & index.html.png

可以尝试修改index.html, 保存后用浏览器访问server 的 ip ( 执行 ip a可以看到server的ip), 即可看到修改后的结果。
(4) error_page 定义当返回状态码是500,502,503,504时,返回错误页面50x.html,。50x.html 页面的位置在root /usr/share/nginx/html 中。
可以做如下尝试:
先访问一个不存在的路径,发现返回了404页面。
然后在error_page中加入状态码404,再重启服务( systemctl restart nginx.servicesystemctl reload nginx.service),重新访问这个不存在的路径,发现返回了50x.html页面。

四 、Nginx变量

(1) HTTP请求变量

  • arg_PARAMETERarg_+ http请求参数名作为一个变量
  • http_HEADER request请求的HEAD
  • sent_http_HEADER 服务端返回给客户端的response的HEAD

(2)内置变量
官网查看内置变量
(3)自定义变量

你可能感兴趣的:(Nginx基础二(配置语法,Nginx变量))