Nginx
常用命令
nginx -t # 查看nginx状态
nginx -s reload # 重新载入配置文件
nginx -s reopen # 重启 Nginx
nginx -s stop # 停止 Nginx
nginx正则匹配 参考
语法规则:
location [=|~|~*|^~|!~|!~*] /uri/ { … }
模式 | 含义 |
---|---|
location = /uri | = 表示精确匹配 |
location ^~ /uri | ^ 进行前缀匹配,~ 表示区分大小写 |
location ~ pattern | ~ 区分大小写的匹配 |
location ~* pattern | ~* 不区分大小写的匹配 |
location /uri | 不带任何修饰符,也表示前缀匹配,但是在正则匹配之后 |
location / | 通用匹配,任何未匹配到其它 location 的请求都会匹配到,相当于 switch 中的 default |
location !~ | 区分大小写不匹配 |
location !~* | 不区分大小写不匹配 |
匹配优先级
- 首先精确匹配 =
- 其次前缀匹配 ^~
- 其次是按文件中顺序的正则匹配
- 然后匹配不带任何修饰的前缀匹配
- 最后是交给 / 通用匹配
- 当有匹配成功时候,停止匹配,按当前匹配规则处理请求
匹配的时候依照最佳匹配规则,按照能匹配到的最多的规则进行匹配
如 location ^~ /test/react/
和 location ^~ /test/
,请求 http://localhost/test/react/react.dev.js
,会匹配 location /test/react/
proxy_set_header 参考
roxy_set_header用来重定义发往后端服务器的请求头。
# 语法格式:
proxy_set_header Field Value;
# Value值 可以是包含文本、变量或者它们的组合。常见的设置如:
proxy_set_header Host $proxy_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
注意:在nginx的配置文件中,如果当前模块中没有proxy_set_header的设置,则会从上级别继承配置。继承顺序为:http, server, location。
X-Real-IP
是指客户端的真实IP,如果设置了$remote_addr这个值,后端服务器就能获取到客户端的真实IP(向nginx发送请求的ip地址)
Host
$http_host 原始请求的host
$proxy_host ngnix的host(proxy_pass的host)
X-Forwarded-For
$proxy_add_x_forwarded_for
X-Forwarded-For的值:第一台nginx的ip",也就是“192.168.1.1, 192.168.1.2”
$remote_addr
在只有一个代理服务器的转发的情况下,两者的效果貌似差不多,都可以真实的显示出客户端原始ip。