nginx配置文件可以分为三个部分,分别是全局块、events块和http块,server块包含在http块中(http块包含http全局块和server块)。以下对server块进行简单拆解分析。
一个server块的配置大致如下:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://example.com:80;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
这里就会涉及到两个内容,一个是server,一个是location。大致总结起来就是这样,域名和服务器的对应关系,通过增加server实现;访问目录的匹配,通过增加location实现。
location存在以下规律(序号越小优先级越高):
- location = # 精准匹配,= 匹配优先级最高。一旦匹配成功,则不再查找其他匹配项
- 2.location ^~ # 带参前缀匹配,^~类型表达式。一旦匹配成功,则不再查找其他匹配项。
- location ~ # 正则匹配(区分大小写)
- location ~* # 正则匹配(不区分大小写)
- location /a # 普通前缀匹配,优先级低于带参数前缀匹配。
- location / # 任何没有匹配成功的,都会匹配这里处理