首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nginx反向代理- proxy_pass导致503服务不可用

nginx反向代理- proxy_pass导致503服务不可用
EN

Server Fault用户
提问于 2021-07-15 16:59:59
回答 2查看 3K关注 0票数 0

我有以下配置:

代码语言:javascript
复制
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;,这一切都是好的,我得到了应用程序。虽然这对我没有帮助,因为我希望通过代理实现这个目标,这样我就可以在每个通过的请求中添加一个请求头。

有什么可能导致这种情况的原因,以及如何解决这个问题?

EN

回答 2

Server Fault用户

发布于 2022-04-16 18:30:58

尝试在proxy_pass地址上使用后端端口,它的标题"HELLO“对后端应用程序有效吗?

代码语言:javascript
复制
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

票数 1
EN

Server Fault用户

发布于 2022-07-14 15:29:00

我也遇到过类似的问题,我发现以下声明导致了503的出现:

代码语言:javascript
复制
 proxy_set_header     Host $host;  # same for $http_host;

由于我们的用例不需要,所以我只需删除它,就可以去掉503 s,并让nginx最终向上游服务器发出请求。

此后,我还了解到,似乎是使用了$host变量,而不是语句本身对我们造成了问题,这意味着我的回答可能不是重点所在。

设置一个固定值(在本例中是在server块内)不会造成问题。

不过,我没有什么解释,我希望其他人能对此有所了解。这曾经适用于nginx1.14,我也相信1.16,但在1.18和1.18以上都不再适用。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1069729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档