gpt4 book ai didi

nginx - 如何使用 nginx 作为跨域的反向代理

转载 作者:行者123 更新时间:2023-12-04 00:10:17 26 4
gpt4 key购买 nike

我需要使用 nginx 实现以下测试用例:
www.example.com/api/应该重定向到 ABC.com/api ,
www.example.com/api/site/login应该重定向到 XYZ.com/api/site/login
但在浏览器中,用户应该只能看到 www.example.com/api.... (而不是重定向的 URL)。

请让我知道如何实现这一目标。

最佳答案

stackoverflow rules禁止使用ABC.com ,所以在示例配置中我使用域名 ABC.example.comXYZ.example.com :

server {

...

server_name www.example.com;

...

location /api/ {
proxy_set_header Host ABC.example.com;
proxy_pass http://ABC.example.com;
}

location /api/site/login {
proxy_set_header Host XYZ.example.com;
proxy_pass http://XYZ.example.com;
}

...

}

(如果需要,将 http://替换为 https://)
location的顺序指令并不重要,因为正如文档 states ,则选择匹配前缀最长的位置。

proxy_set_header参数,nginx 将完全按照您需要的方式运行,用户将看到 www.example.com/api... 否则,如果没有此参数,nginx 将生成 HTTP 301 重定向到 ABC.example.com 或 XYZ.example。 com。

您无需在 proxy_pass 中指定 URI参数因为,作为文档 states , 如果 proxy_pass 没有指定 URI,则请求 URI 以与处理原始请求时客户端发送的相同格式传递给服务器。

您可以将您的服务器 ABC.example.com 和 XYZ.example.com 指定为域名或 IP 地址。如果指定为域名,则需要指定附加参数 resolver 在您的服务器配置中。如果您有本地名称服务器,则可以使用本地名称服务器,或者使用外部名称服务器,例如 Google 公共(public) DNS (8.8.8.8) 或 ISP 为您提供的 DNS:
server {

...

server_name www.example.com;
resolver 8.8.8.8;

...

}

关于nginx - 如何使用 nginx 作为跨域的反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36974100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com