我有以下配置:
server {
listen: 8080;
location / {
proxy_pass https://somehost.abc.xyz;
proxy_redirect off;
proxy_set_header Host somehost.abc.xyz;
proxy_set_header X-Real-IP somehost.abc.xyz;
proxy_set_header X-Forwarded-For somehost.abc.xyz;
proxy_set_header X-Forwarded-Host somehost.abc.xyz;
proxy_set_header HELLO pizza;
}
}每当我访问代理时,假设我去了http://localhost:8080/home,就会得到503个服务不可用(不是来自nginx服务,也不是来自我试图转到https://somehost.abc.xyz/home的应用程序)。
但是如果我只是去https://somehost.abc.xyz/home或做一个重定向的return 301 https://somehost.abc.xyz/home;,这一切都是好的,我得到了应用程序。虽然这对我没有帮助,因为我希望通过代理实现这个目标,这样我就可以在每个通过的请求中添加一个请求头。
有什么可能导致这种情况的原因,以及如何解决这个问题?
发布于 2022-04-16 18:30:58
尝试在proxy_pass地址上使用后端端口,它的标题"HELLO“对后端应用程序有效吗?
server {
listen: 8080;
location / {
proxy_pass https://somehost.abc.xyz:443;
proxy_redirect off;
proxy_set_header Host somehost.abc.xyz;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host your.host.address;
proxy_set_header HELLO pizza;
proxy_ssl_server_name on;
proxy_ssl_name somehost.abc.xyz;
# Optional
proxy_ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
proxy_ssl_ciphers 'Required SSL Ciphers';
proxy_ssl_trusted_certificate "/path/to/your/ca-cetificates.crt";
}
}编辑:使用SSL后端,如果没有后端ssl证书,您应该定义proxy_ssl_name
发布于 2022-07-14 15:29:00
我也遇到过类似的问题,我发现以下声明导致了503的出现:
proxy_set_header Host $host; # same for $http_host;由于我们的用例不需要,所以我只需删除它,就可以去掉503 s,并让nginx最终向上游服务器发出请求。
此后,我还了解到,似乎是使用了$host变量,而不是语句本身对我们造成了问题,这意味着我的回答可能不是重点所在。
设置一个固定值(在本例中是在server块内)不会造成问题。
不过,我没有什么解释,我希望其他人能对此有所了解。这曾经适用于nginx1.14,我也相信1.16,但在1.18和1.18以上都不再适用。
https://serverfault.com/questions/1069729
复制相似问题