2015-08-10 11 views
5

Ich habe ein Problem mit Nginx-Umleitung. Ich arbeite an Nginx 1.4.4 und ich habe zwei separate Weiterleitungen. Es sollte auf zwei Arten funktionieren: Erste Weiterleitung: Adresse address1.com leitet an die Adresse address2.com -> Adresse address2.com leitet an addres2.com:1234, wo sich die Anwendung befindet.502 Bad Gateway beim Umleiten auf Nginx

Zweite Umleitung direkt von ddress2.com ist: - address2.com umleitet

Nun, das Problem address2.com:1234: - Umleiten von address1.com zu address2.com funktioniert, aber address2.com zu address2.com: port nicht. Es endet mit 502 Bad Gateway error. Configs und

Fehler von log sind unten dargestellt: Informationen vom 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" stromaufwärts "https://127.0.0.1: {port}", host: „{Server name} "

Nginx verwendet viele .conf-Dateien, die im Speicherort conf.d gespeichert sind.

address1.conf (Dies funktioniert):

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-Datei (Dies gilt nicht):

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; 
    }} 

Lustige Sache ist, dass ich eine andere Anwendung auf dem System arbeiten addr3.com -> addr3.com:port und umleitung funktioniert einfach perfekt. Der einzige

Unterschied zwischen address2.conf und address3.conf ist Port, auf dem Anwendungen arbeiten. Jede Adresse verwendet https, Port 443 ist auf der Firewall geöffnet.

Hope meine Beschreibung ist detailliert genug, wenn nicht nur lassen Sie es mich wissen. Ich habe seit einigen Tagen mit diesem Problem zu kämpfen und habe keine Tipps oder Lösungen für mich gefunden.

Ich würde jede Hilfe zu schätzen wissen.

Antwort

1

Das Problem könnte mit SELinux sein. Überprüfen Sie, ob es mit sestatus läuft. Da einige Forwarding für Sie arbeitet, kann dieser Befehl überflüssig sein, aber andere könnten es erfordern:

sudo setsebool -P httpd_can_network_connect 1 

Damit für bestimmte Ports forwaring, die Ihr Problem sein könnte, führen Sie diesen Befehl ein:

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

Ersetzen Sie 8088 durch den betreffenden Port.

Der Befehl semanage wurde möglicherweise nicht gefunden. Wie Sie es installieren, ist Distro-abhängig, aber Sie können wahrscheinlich nach einer Lösung dafür googlen.

Verwandte Themen