Nginx常用配置说明

 一、指令说明

Nginx指令 说明
worker_processes  配置Nginx的工作进程数,一般为Cpu总核心数或者总核心数的两倍
events 控制Nginx处理连接的方式
http Nginx 处理 http 请求的主要配置块,大多数配置都在这里面进行
worker_connections  配置 Nginx 允许单个进程并发连接的最大请求数
include  用于引入配置文件
default_type  设置默认文件类型
sendfile  默认值为 on ,表示开启高效文件传输模式
keepalive_timeout  设置长连接超时时间(单位:秒)
server Nginx 中主机的配置块,可用于配置多个虚拟主机
listem  监听端口,默认监听 80 端口
server_name 

设置主机域名;除了可以精准配置方式外,还可以利用通配符(*)与正则表达式设置域名,实现域名的泛解析 。如:server name  *.test.com

location  server 中对应目录级别的控制块 ,可以有多个
root  设置主机站点根目录地址,使用反向代理的时候可以用作设置缓存目录等
index  指定默认索引文件(首页)
error_page 自定义错误页面
error_log

      存放错误日志(参数1:存在路径;参数2:日志等级);debug、info、notice、warn、error 和 crit ,日志记录详细程度依次递减, debug 记录的内容最详细, crit 记录的内容最简洁。 

      error_log 指令可以在main、http、server 、location 块中设置,配置方式相同。

     关闭日志: error_log /dev/null ;

autoindex 开启目录列表功能;在 http块中,表示用于对所有站点都有效 ;在server 块中,表示对指定站点有效;在location块中,表示对某个目录起作用。
autoindex_exact_size 设置精准显示文件大小:on/off
autoindex_localtime 文件最后修改时间格式:on/off
proxy_set_header 在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息
proxy_connect_timeout 配置 Nginx 与后端代理服务器尝试建立连接的超时时间
proxy_read_timeout 配置 Nginx 向后端服务器组发出 read 请求后,等待响应的超时时间
proxy_send_timeout 配置 Nginx 向后端服务器组发出 write 请求后,等待响应的超时时间
proxy_redirect 用于修改后端服务器返回的响应头中的 Location 和 Refresh
upstream web_server 负载均衡配置模块
proxy_store 用于开启本地缓存
proxy_store_access 设置缓存的读写规则
proxy_temp_path 设置反向代理时接收的数据临时存储文件的目录
负载均衡参数 参数值
weight 权值,权值越高则被分配到的概率越大;server 192.168. 78.128 weight=1 max_fails=1 fail_timeout=2 ;
max_fails 允许请求失败的次数,默认为i。当超过最大次数时,返回 proxy_ next_ upstream 指令定义的错误
fail_timeout 在经历了max_fails次失败后,暂停服务的时间 。 且在实际应用中 max_fails 一般与 fail_ timeout 一起使用
backup 预留的备份机器
down 表示当前的 server 暂时不参与负载均衡

 二、location匹配规则

location 可以同时定义多个,当 一个配置文件中同时出现多个 location 时,普通location 之间遵循“最大前缀匹配”原则 。 通俗地讲就是,匹配度最高的 location 将会执行。

当最大前缀 location 与正则 location 同时存在时,如果正则 location 匹配成功,则不会执行最大前缀 location 

前缀 说明(优先级1为最高)
/ 最大前缀匹配(优先级:4)
= 根据其后的指定模式进行精准匹配 。例:在访问时要与 /html/aaa/index.html 完全一致才会执行其后的指令块(优先级:1)
~ 正则匹配:使用正则表达式完成 locat ion 的匹配,区分大小写(优先级:3)
~* 正则匹配:使用正则表达式完成 location 的匹配,不区分大小写(优先级:3)
^~ 非正则匹配:不使用正则表达式,完成以指定模式开头的 location 匹配(优先级:2)
@ 用于定义一个 location 块,且该块不能被外部客户端所访问,只能被Nginx 内部配置指令所访问
worker_processes 1;

events{
    worker_connections 1024;
}
http{
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 60;
    server{
        listem 80;    #监听80端口号
        server_name test.com; #监听域名
        location / {
            root cache;  #缓存目录
            proxy_store on;  #用于开启本地缓存
            proxy_store_access user:rw group:rw all:r; #设置缓存的读写规则
            proxy_temp_path cache_tmp;  #设置反向代理时接收的数据临时存储文件的目录
            #利用正则表达式匹配缓存目录中的文件、目录或符号链接是存在
            #!-e 表示检查一个文件、目 录或符号链接是否存在
            #$request_filename 表示当前请求的文件路径或 URI
            if(!-e $request_filename){
                proxy_pass http://192.168.78.128;#域名test.com的请求全部转发到Web服务器 192.168.78.128
            }
            proxy_set_header Host $host; #第1个参数用于表示字段名称,第2个参数表示字段值
            proxy_set_header X-Real- IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        location /img/ {
            root /image;  #收到"/img/test.png"请求时,将请求映射为"/image/img/test.png"
            alias /image/;  #收到"/img/test.png"请求时,将请求映射为"/image/test.png"
            index index.html  #设置首页文件
        }
        location =/js{  #精准匹配:用户访问的 URI 与指定的 URI 完全一致的情况
            allow 192.168.78.129;  #允许此ip地址访问
        }
        location ~\.html$ {  #表示匹配网站根目录下以. html 结尾的文件
            allow all;  #允许所有用户访问
        }
        location ~^/aaa/.*\ .html$ {  #表示匹配网站根目录下 aaa 目录中以. html 结尾的文件 
            deny all;
        }
        error_page 502 504 500  /error.html; #当http响应码为502 504 500时跳转到error.html
        error_page 404=200 /404.html ; #将404响应码改为200,并跳转至404.html
        location=/50x.html{
        }
        #权重配置负载均衡
        upstream web_server {
	        server 192.168.1.1 weight=1; # 权重为1
	        server 192.168.1.2 weight=3; # 权重为3
        }
        #ip_hash配置负载均衡
        upstream web_server {
            ip_hash;
	        server 192.168.1.1;
	        server 192.168.1.2;
        }
        #还可以利用第三方模块实现,这里不多做讲解
    }
    allow 192.168.78.128;  #允许此ip地址访问
    deny all;  #禁止所有客户端访问
    error_log logs/error.log notice #错误日志存放,日志等级为notice
}

猜你喜欢

转载自blog.csdn.net/qq_26900081/article/details/88063388