gpt4 book ai didi

http - NGINX proxy_pass 变更方案

转载 作者:行者123 更新时间:2023-12-04 22:40:32 25 4
gpt4 key购买 nike

我有一个从外部地址接收请求的服务,例如https://example.com ,以及一个内部地址,例如本地主机:8080。
我必须使所有针对此服务的请求看起来好像它们将被定向到相同的主机名。
我最初的计划是设置一个 NGINX 反向代理来交换 localhostexample.com在 localhost:8081 联系时。

        map $http_host $served_host {
default $http_host;
localhost:8081 example.com;
}

server {
listen 8081;
listen [::]:8081;

location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $served_host;
}
}
这几乎可行,但该方案仍然是错误的。来自外部的请求被定向到 https://example.com , 而从专用网络 (localhost:8081) 他们现在被定向到 http://example.com .
如何更改 https -> http 或 http -> https?两者都可以,我只需要完全相同的地址。

最佳答案

我自己想通了,以防有人偶然发现这个问题:
原始请求具有 X-Forwarded-Proto header 添加了值 https .该服务使用它来重建原始地址,包括 https:// .而内部没有这个标题。所以简单地添加

    proxy_set_header X-Forwarded-Proto https;
到代理传递使内部请求显示为使用方案 https , 也。我不确定这是否是最佳解决方案,但它正在工作:)

关于http - NGINX proxy_pass 变更方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65774828/

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