nginx不常用配置集锦

打印输出

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";
}

你可能感兴趣的:(nginx)