如何解决Nginx:重写一系列位置
我正在尝试使用 Nginx 为多个代理重写多个位置(使用不同的 IP)。
我已经试过了:
location ~/target/(?<ip>\d+\.\d+\.\d+\.\d+)/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass https://$ip;
rewrite ^/target_ip/$ip/(.*) /$1 break;
proxy_intercept_errors off;
proxy_buffering off;
}
但不幸的是它没有删除 /target/ip :
在此服务器上找不到请求的 URL /target/192.168.10.3/cgi-bin/luci。
这种方式有效:
location ~/target/(?<ip>\d+\.\d+\.\d+\.\d+)/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass https://$ip;
if ($ip = "192.168.10.3") {
rewrite ^/target_ip/192.168.10.3/(.*) /$1 break;
}
proxy_intercept_errors off;
proxy_buffering off;
}
但是,我必须为每个 IP 指定一个 if 语句。我需要更紧凑的东西。
你有什么建议吗?
谢谢!
--------------- 编辑 ---------------
这是解决方案,感谢理查德史密斯:
location ~/target/(?<ip>\d+\.\d+\.\d+\.\d+)/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass https://$ip;
rewrite ^/target_ip/[^/]+/(.*)$ /$1 break;
proxy_intercept_errors off;
proxy_buffering off;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。