在nginx上redirect时出现502错误的网关

我有一个nginxredirect的问题。 我在nginx 1.4.4上工作,我有两个单独的redirect。 它应该以两种方式工作:第一个redirect:地址address1.comredirect到address2.com – > Address address2.comredirect到addres2.com:1234其中应用程序驻留。

第二个redirect直接来自ddress2.com: – address2.comredirect到address2.com:1234

现在的问题: – 从address1.comredirect到address2.com工作,但address2.com到address2.com:port不。 它以502错误网关错误结束。 configuration和

来自日志的错误如下:来自error.log的信息:

[error] : *386 connect() failed (111: Connection refused) while connecting to upstream, client: {client ip addr}, server:{server name}, request: 

“GET / HTTP / 1.1”,上游:“ https://127.0.0.1:{port }”,主机:“{服务器名称}”

Nginx使用保存在conf.d位置的很多.conf文件。

address1.conf(这工作):

 server { ### server port and name ### listen {ip_addr}:443; ssl on; server_name address1.com; access_log /var/log/nginx/address1.log; error_log /var/log/nginx/address1-error.log; ssl_certificate /etc/httpd/ssl/servercert.crt; ssl_certificate_key /etc/httpd/ssl/private/serverkey.key; location / { rewrite ^ $scheme://address2.com redirect; }} 

address2.com conf文件(这不):

 server { ### server port and name ### listen {ip_addr}:443; ssl on; server_name address2.com; access_log /var/log/nginx/address2.log; error_log /var/log/nginx/address2-error.log; ssl_certificate /etc/httpd/ssl/servercert.crt; ssl_certificate_key /etc/httpd/ssl/private/serverkey.key; proxy_read_timeout 180; location / { proxy_pass https://127.0.0.1:{port}; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-Protocol $scheme; proxy_set_header X-Forwarded-HTTPS on; }} 

有趣的是,我有另一个应用程序的工作addr3.com – > addr3.com:port和redirect工作完美。 唯一的

address2.conf和address3.conf之间的区别是应用程序工作的端口。 每个地址使用https,端口443在防火墙上打开。

希望我的描述足够详细,如果不是只是让我知道。 我一直在这个问题挣扎了几天,还没有find适合我的任何提示或解决scheme。

我会很感激任何帮助。

这个问题可能与SELinux有关。 检查它是否运行sestatus 。 由于某些转发正在为您工作,此命令可能是多余的,但其他人可能需要:

 sudo setsebool -P httpd_can_network_connect 1 

要启用特定端口(可能是您的问题),请运行以下命令:

 sudo semanage port -a -t http_port_t -p tcp 8088 

将8088替换为有问题的端口。

可能找不到命令semanage 。 你如何安装它是依赖于发行版,但你可能很有可能谷歌的解决方案。