Nginx常用配置
调试
nginx的调试大致可以通过如下几种方式来进行:
- 通过日志进行调试
- 通过手动return状态码进行调试(多用于调试location,看url是否匹配到某个location)
location
匹配类型
~ 表示执行一个正则匹配,区分大小写* 表示执行一个正则匹配,不区分大小写 表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他location。
^
= 进行普通字符精确匹配。也就是完全匹配。
@ “@” 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files
优先级
在nginx的location和配置中location的顺序没有太大关系。正location表达式的类型有关。相同类型的表达式,字符串长的会优先匹配。
以下是按优先级排列说明:
第一优先级:等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项。
第二优先级:^类型表达式。一旦匹配成功,则不再查找其他匹配项。 ~*)的优先级次之。如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。
第三优先级:正则表达式类型(
第四优先级:常规字符串匹配类型。按前缀匹配。
重定向与转发
转发时改变url
可以通过alias来实现。
比如想要将http://xxx.com/devprocess/index.html这个请求,通过服务器的/var/www/dev-process/index.html这个文件来响应,可以这样配置:
1 | |
注意在location ^~ /devprocess的末尾,不要加斜杠。
将请求转发到服务器的某个端口
1 | |
常见问题
修改配置并reload后,部分请求可以用到新的配置,但是部分请求还是老的配置
遇到的这种情况,是因为nginx的多个进程中,有部分在reload后并未读取到修改后的配置。kill掉nginx进程重启后,就正常了。