nginx的localtion指令详解
Nginx 的 HTTP 配置主要包括三个区块,结构如下:
http { # 这个是协议级别
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
gzip on;
server { # 这个是服务器级别
listen 80;
server_name localhost;
location / { # 这个是请求级别
root html;
index index.html index.htm;
}
}
}
1、location 区段
- location 是在 server 块中配置,根据不同的 URI 使用不同的配置,来处理不同的请求。
- location 是有顺序的,会被第一个匹配的location 处理。
- 基本语法如下:
location [=|~|~*|^~|@] pattern{……}
2、location 前缀含义
= 表示精确匹配,优先级也是最高的
^~ 表示uri以某个常规字符串开头,理解为匹配url路径即可
~ 表示区分大小写的正则匹配
~* 表示不区分大小写的正则匹配
!~ 表示区分大小写不匹配的正则
!~* 表示不区分大小写不匹配的正则
/ 通用匹配,任何请求都会匹配到
@ 内部服务跳转
查找顺序和优先级
= 大于 ^~ 大于 ~|~*|!~|!~* 大于 /
多个location配置的情况下匹配顺序为:首先匹配 =,其次匹配^~, 其次是按正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。
3、location 配置示例
3、location 配置示例
1、没有修饰符 表示:必须以指定模式开始
server {
listen 80;
server_name localhost;
location /abc {
root /home/www/nginx;
index 2.html;
}
那么,如下是对的:
http://192.168.1.9/abc
2、=表示:必须与指定的模式精确匹配
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/http_access.log main;
location / {
root /usr/share/nginx/html;
index a.html index.htm;
}
location = / {