在 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目录中获取。