最近在配置nginx时,需要对某些指令的路径来做处理,最常使用的是 location /web {} 这样的方式,其中 web 中访问的路径,如 http://www.kw360.net/web/jisuan 就包含在内。小编有个需求是需要包含 http://www.kw360.net/web/jisuan,http://www.kw360.net/api/,http://www.kw360.net/print/esc 等这样的也支持,虽说可以用笨一些的方法来直接写死如:location /web {},location /api {},location /print {} 也能实现效果,但是这样显的太笨重了。找了一些文档最后实现了。
ngxin location路径匹配不同开头
匹配以web、print、api开头的配置代码如下:
server {
listen 80;
server_name localhost;
location ~ /web|print|api/ {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header Origin "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
}
}
nginx location指令语法及说明
location [=|~|~*|^~|@] /uri/ { … } 或 location @name { … }
= 开头表示精确匹配; 如: A 中只匹配根目录结尾的请求,后面不能带任何字符串.
^~ 开头表示uri以某个常规字符串开头,不是正则匹配;
~ 开头表示区分大小写的正则匹配;
~* 开头表示不区分大小写的正则匹配;
/ 通用匹配, 如果没有其它匹配,任何请求都会匹配到;
ngxin location路径匹配常用实例
location ~* .(jpg|png|gif|jpeg)$ {
# 匹配所有以 jpg,png,gif,jpeg 结尾的请求
}
location ~ /web|print|api/ {
# 匹配所有以 web,print,api开头的请求
}
location / {
# 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求
}
location = / {
# 精确匹配 / ,主机名后面不能带任何字符串
}