欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx常用配置说明

程序员文章站 2024-02-20 19:54:10
...

 一、指令说明

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/test.png"
            alias /image/;  #收到"/img/test.png"请求时,将请求映射为"/image/img/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
}

 

相关标签: nginx