0%

nginx【单机版部署】

部署

# ccentos 7
yum install nginx

启动

systemctl start/stop/restart nginx

# 通过status查看nginx.conf配置文件位置
systemctl status nginx

修改配置

vim /etc/nginx/nginx.conf
# 修改默认端口80 -> 8080
listen       8080 default_server;
listen       [::]:8080 default_server;

# 检查配置是否正确,有successful表示可用
nginx -t 

# 重新加载配置文件
nginx -s reload

配置详解

...              // 全局块

events {         // events块
   ...
}

http      // http块
{
    ...   // http全局块
    server        // server块
    { 
        ...       // server全局块
        location [PATTERN]   // location块
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     // http全局块
}
  1. 全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
  2. events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
  3. http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
  4. server块:配置虚拟主机的相关参数,一个http中可以有多个server
  5. location块:配置请求的路由,以及各种页面的处理情况。

nginx变量使用

# 变量申明
set $变量名 变量值

# 变量的引用
$变量名

预定义变量

常用变量

变量 作用
arg_参数名 URL中某个具体参数的值
query_string 与args变量完全相同
args 全部URL参数
is_args 如果请求的URL中有参数则返回?否则返回空
content_length HTTP 请求中标识包体长度的Content-Length头部的值,头部没有这个则为空
content_type 标识请求包体类型的Content-Type 头部的值
uri 请求的URI(不包含,不包含?后的参数)
document_uri 与uri完全相同
request_uri 请求的URL(包含?后的参数)
scheme 协议名 HTTP 或者 HTTPS
request_method 请求的方法GET 或者 POST
request_length 所有请求内容的大小,包括请求行,头部,包体等
remote_user 有HTTP Basic Authentication 协议传入的用户名
request 原始的url请求,含有方法和协议版本
cookie_COOKIE cookie COOKIE的值
http_HEADER HTTP请求头中的内容,HEADER为HTTP请求中的内容转为小写,-变为_(破折号变为下划线),例如:$http_user_agent(Uaer-Agent的值)
sent_http_HEADER HTTP响应头中的内容,HEADER为HTTP响应中的内容转为小写,-变为_(破折号变为下划线),例如: $sent_http_cache_control, $sent_http_content_type…;

TCP相关的变量

变量 作用
binary_remote_addr 客户端地质的整型格式,对于IPv4是4字节
remote_addr 客户端地址
remote_port 客户端端口
connection 递增的连接序号
connection_requests 当前连接上执行过的请求数,对keepalive 有意义
proxy_protocol_addr 若使用了proxy_protocol 协议则返回协议中的地址
proxy_protocol_port 若使用了proxy_protocol 协议则返回协议中的端口
server_addr 服务器端地址(本端地址)
server_port 服务器端端口
TCP_INFO tcp内核层参数($tcpinfo_rtt,$tcpinfo_rttvar,$tcpinfo_snd_cwnd,$tcpinfo_rcv_space)
server_protocol 服务端协议,例如 HTTP

Nginx处理请求过程中产生的变量

变量 作用
request_time 请求处理到现在的耗时
server_name 匹配上的请求server_name
request_completion 若请求处理完则返回OK,否则为空
request_id 以16禁止输出的请求标识id,随即生成

Nginx系统变量

变量 作用
time_local 以本地时间的标准输出
pid 所属worker进程的id
hostname 与系统上输出hostname 一致