我的 nginx 中有以下部分代码:
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
include snippets/ssl-renmind.net.conf;
include snippets/ssl-params.conf;
...
rewrite ^/manage/GO/(.+)$ /gatherOpinionAdmin/$1 last;
rewrite ^/manage/CT/(.+)$ /couponTracksAdmin/$1 last;
rewrite ^/manage/CH/(.+)$ /contestHeroAdmin/$1 last;
rewrite ^/manage/DC/(.+)$ /distributeContentAdmin/$1 last;
rewrite ^/manage/PD/(.+)$ /productsAdmin/$1 last;
rewrite ^/manage/PP/(.+)$ /pitchPageAdmin/$1 last;
rewrite ^/([^/]+)/GO/(.+)$ /gatherOpinionUser/$2?currentFolder=$1 last;
rewrite ^/([^/]+)/CH/(.+)$ /contestHeroUser/$2?currentFolder=$1 last;
rewrite ^/([^/]+)/CT/(.+)$ /couponTracksUser/$2?currentFolder=$1 last;
rewrite ^/([^/]+)/DC/(.+)$ /distributeContentUser/$2?currentFolder=$1 last;
rewrite ^/([^/]+)/PD/(.+)$ /productsUser/$2?currentFolder=$1 last;
if (!-e $request_filename){
#rewrite ^/([^/]+)(.*+)$ /genUser/$2?currentFolder=$1 last;
}
}
我正在尝试添加这个:
location /webmin/ {
proxy_pass https://localhost:10000/;
proxy_redirect https://$host:10000/ /webmin/;
proxy_set_header Host $host;
}
仅当我删除上面重写所有不存在文件(当前已注释掉)的最后一个重写时,该方法才有效。如果其位置为 /webmin/,我该如何跳过所有重写来实现。/webmin/ 实际上不存在文件。
答案1
您应该使用以下设置:
location / {
if (!-e $request_filename) {
rewrite ^/([^/]+)(.*+)$ /genUser/$2?currentFolder=$1 last;
}
}
location /webmin {
proxy_pass https://localhost:10000/;
proxy_redirect https://$host:10000/ /webmin/;
proxy_set_header Host $host;
}
这里重要的部分是添加location /
块,以便 nginx 能够location
正确使用查找。
也可以删除以下if
声明,总是首选。
答案2
好吧,每次最终寻求帮助我都能解决问题。
将其放入:if ($request_uri ~ (/webmin)){ break; }
解决了这个问题。