Raf*_*ski 5 redirect reverse-proxy nginx
我有一个nginx重定向问题.我在nginx 1.4.4上工作,我有两个单独的重定向.它应该有两种工作方式:第一次重定向:地址address1.com重定向到地址address2.com - >地址address2.com重定向到应用程序所在的addres2.com:1234.
第二次重定向直接来自ddress2.com: - address2.com重定向到address2.com:1234
现在的问题是: - 从address1.com重定向到address2.com,但是address2.com到address2.com:port没有.它以502 Bad Gateway错误结束.配置和
日志中的错误如下所示:来自error.log的信息:
[error] : *386 connect() failed (111: Connection refused) while connecting to upstream, client: {client ip addr}, server:{server name}, request:
Run Code Online (Sandbox Code Playgroud)
"GET/HTTP/1.1",上游:" https://127.0.0.1 : {port}",主机:"{server name}"
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;
}}
Run Code Online (Sandbox Code Playgroud)
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;
}}
Run Code Online (Sandbox Code Playgroud)
有趣的是,我有另一个应用程序在addr3.com上工作 - > addr3.com:port和重定向工作非常完美.唯一的
address2.conf和address3.conf之间的区别是应用程序工作的端口.每个地址都使用https,端口443在防火墙上打开.
希望我的描述足够详细,如果不是让我知道.我几天来一直在努力解决这个问题,并且没有找到适合我的任何提示或解决方案.
我很感激任何帮助.
问题可能出在 SELinux 上。检查它是否与 一起运行sestatus。由于某些转发正在为您工作,因此此命令可能是多余的,但其他转发可能需要它:
sudo setsebool -P httpd_can_network_connect 1
Run Code Online (Sandbox Code Playgroud)
要启用特定端口的转发(这可能是您的问题),请运行以下命令:
sudo semanage port -a -t http_port_t -p tcp 8088
Run Code Online (Sandbox Code Playgroud)
将 8088 替换为有问题的端口。
semanage可能找不到该命令。如何安装它取决于发行版,但您很可能可以通过谷歌搜索解决方案。
| 归档时间: |
|
| 查看次数: |
2172 次 |
| 最近记录: |