nginx – Umleitung schlägt nach zwei Reverse-Proxys fehl
怪我咯
怪我咯 2017-05-16 17:24:31
0
2
1205

Es gibt einen Server im Intranet mit 3 Ports, die Webdienste bereitstellen. Die Server sind Nginx, Apache und Serv-U. Jetzt müssen wir drei Dienste an das externe Netzwerk weiterleiten.

  • Keine Berechtigung zur Steuerung des Routers
  • Das Netzwerkmanagement nutzt PortTunnel nur, um Port 80 an das externe Netzwerk 882 weiterzuleiten

Also wollte ich es in eine Portweiterleitung einbinden und Nginx verwenden, um den Host umgekehrt zu ermitteln.
nginx.conf lautet wie folgt:

server {
    listen       80;
    server_name  no1.home s1.abc.com;
    index index.html index.htm index.php;      
    access_log off;
    location / {
        proxy_set_header   X-Real-IP  $remote_addr;
        proxy_set_header   X-HappyHome  XMWZWX;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://10.110.39.2:10;    
    }
}

Drei Codeteile ersetzen jeweils drei Elemente. Nach der Verwendung von Host zum Parsen ist es normal, aber sobald Sie das vom Netzwerkverwaltungssystem festgelegte externe Netzwerk verwenden, treten Probleme auf:

Nach dem Besuch von http://xxx.com:882/folder
Es springt automatisch zu http://xxx.com:80/folder/

Was ist das Problem? Ist nginx.conf falsch konfiguriert?

怪我咯
怪我咯

走同样的路,发现不同的人生

Antworte allen(2)
左手右手慢动作

好吧,我翻半天nginx的文档后找到了答案。
在三个站点的配置里面都加一句
proxy_redirect "http://10.110.39.2:80" "http://$host:882" ;
就可以了。

左手右手慢动作

所贴出的配置文件看不到问题所在。所以只能给出如下建议(按顺序来):

  1. 打开 access_log, 确认访问http://xxx.com:882的请求确实已经被该nginx处理。建议查看全局的log,而不是针对此 virtual server 所配置的日志,这样用来排除由于配置错误,请求被其他 virtual server 处理的问题。
  2. 如果[1]得到确认,则如法炮制确认 http://10.110.39.2:10 是否收到请求。
  3. 如果[2]也得到了确认,那么这个时候,请对监听 10.110.39.2:10 的应用程序进行 debug。
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage