我有一个托管在远程后端服务器上的微型网站,如 https://remote-server.mydomain.com/pdf
我正在尝试通过 Nginx 代理在不同的位置进行发布,以通过以下配置保持内容集中。
/etc/nginx/conf.d/backends.conf
upstream pdf-dev {
zone pdf-dev-service 256k;
server https://remote-server.mydomain.com;
}
/etc/nginx/conf.d/pdf.conf
location /dev/pdf {
proxy_pass https://pdf-dev/pdf;
}
Nginx 可以通过 https://gateway.mydomain.com
访问当我点击网址 https://gateway.mydomain.com/dev/pdf 我得到了微型网站。 但是,当我点击微型网站内的链接时,我会收到随后的 URL,其中会删除该位置中的“dev”部分。就像,如果我在加载的页面中单击“关于”,Nginx 会将其作为 https://gateway.mydomain.com/pdf/about 而不是 https://gateway.mydomain.com/dev /pdf/关于
任何保留路径/dev/pdf的方法。因为我们正在考虑利用 nginx 从其他环境(如 PAT 和 PROD)发布微型网站。
我尝试了不同堆栈帖子中可用的不同配置选项,但没有任何帮助。
这是 nginx proxy_pass 指令的基础,我坚信你应该花至少一分钟的时间来“谷歌”它至少一次......
话虽这么说:
根据 此 nginx 文档页面;
如果代理服务器的地址后跟 URI,并且 URI 与地址一起指定,则它将替换请求 URI 中与位置参数匹配的部分。如果指定的地址没有 URI,或者无法确定要替换的 URI 部分,则传递完整的请求 URI(可能经过修改)。
更好的是,再次根据 此文档页面
请求 URI 被传递到服务器,如下所示:
如果使用 URI 指定 proxy_pass 指令,则当请求传递到服务器时,规范化请求 URI 中与位置匹配的部分将被指令中指定的 URI 替换:
location /name/ {
proxy_pass http://127.0.0.1/remote/;
}
如果在没有指定 URI 的情况下指定 proxy_pass,则在处理原始请求时,请求 URI 将以与客户端发送的形式相同的形式传递到服务器,或者在处理更改的 URI 时传递完整规范化的请求 URI:
location /some/path/ {
proxy_pass http://127.0.0.1;
}