在 nginx 中,location
是用来匹配请求 URI 的指令,它告诉 NGINX 如何处理特定的请求。location
指令通常用于配置不同 URI 的访问规则,例如重定向、反向代理、设置缓存等。
以下是 location
指令的一般格式:
location [ = | ~ | ~* | ^~ ] uri { ... }
=
:用于精确匹配请求 URI。^~
:表示包含正则表达式,并且匹配以指定的正则表达式开头,对URI的最左边部分做匹配检查,不区分字符大小写。~
:表示包含正则表达式,并且区分大小写。~*
:表示包含正则表达式,并且不区分大写。
匹配优先级从高到低:
= ^~ ~/~* 不带符号
示例:
server {
listen 80;
server_name test.com;
location / {
root /var/www/html;
index index.html;
}
location /images/ {
alias /var/www/images/;
}
location ~* \.(gif|jpg|jpeg|bmp|png|tiff|tif|ico|wmf|js)$ {
root /var/www/picture;
index index.html;
}
}
在这个示例的 NGINX 配置中,定义了一个简单的服务器块 (server
),监听 80
端口,并且设置了 server_name
为 test.com
。这个配置中包含了三个 location
块,分别用于不同的 URI 匹配和处理。
-
第一个
location
块:location /
:匹配所有的请求。root /var/www/html;
:指定了请求的根目录为/var/www/html
。
-
第二个
location
块:location /images/
:匹配所有以/images/
开头的请求。alias /var/www/images/;
:将请求映射到/var/www/images/
目录。
-
第三个
location
块:location ~* \.(gif|jpg|jpeg|bmp|png|tiff|tif|ico|wmf|js)$
:使用正则表达式匹配以.gif
,.jpg
,.jpeg
,.bmp
,.png
,.tiff
,.tif
,.ico
,.wmf
,.js
结尾的 URI。root /var/www/picture;
:指定了这些请求对应的文件应该从/var/www/picture
目录中获取。