打印输出
location /test {
default_type text/html;
return 200 'hello word ${uri} $arg_name';
}
$uri 指当前路径
$arg_xxx 值get参数
重写并重定向跳转
location / {
rewrite ^/loginAuth(.*)$ 'http://192.168.203.141/user/login$1' redirect;
}
也可以写在serve块
重写
location ~* \/vst.*\.(ttf|woff|css|js|png|jpg|ico)$ {
root F:/nginx-1.15.10/html;
rewrite '/vst(.*)' '/vst_web/$1' break; #如果请求为/vst/abc.png 此时路径为/vst_web/abc.png
try_files $uri /vst_web/$uri;
}
注意:break重写后直接输出,last重写后再次匹配
~ 为区分大小写匹配(可用正则表达式) ~*不区分大小写
重写(不匹配某些字符)
location ~* \/vst(?!\/other).*\.(ttf|woff|css|js|png|jpg|ico)$ {
root F:/nginx-1.15.10/html;
rewrite '/vst(.*)' '/vst_web/$1' break;
try_files $uri /vst_web/$uri;
}
(?!\/other) 表示非 /other
别名
location /test {
alias F:/testing/demo/;
try_files $uri $uri/ index.html;
}
注意:如果请求后面有文件名,例如 /test/123.html 则会访问别名文件夹下的文件,否则会访问root目录下的index.html文件
同一url根据get参数不同设置不同代理
location /smarthome {
set $proxy "http://192.168.0.67:9999";
if ($arg_type ~* "^light$") {
set $proxy "http://192.168.0.68:8020";
}
proxy_pass $proxy;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_read_timeout 10;
}
//含义如下伪代码
string proxy = "http://192.168.0.67:9999";
if (请求参数["type"] == "light") {
proxy = "http://192.168.0.68:8020";
}