2015-08-10 12 views
5

Ho un problema con il reindirizzamento nginx. Lavoro su nginx 1.4.4 e ho due reindirizzamenti separati. Dovrebbe funzionare in due modi: Primo reindirizzamento: indirizzo indirizzo1.com reindirizza all'indirizzo address2.com -> Indirizzo address2.com reindirizza ad addres.com.com121234 dove risiede l'applicazione.502 Gateway non valido durante il reindirizzamento su nginx

secondo redirect direttamente dal ddress2.com: - address2.com reindirizza al address2.com:1234

Ora il problema: - reindirizzamento da address1.com a address2.com funziona, ma address2.com per address2.com:port no. Termina con errore 502 Bad Gateway. Configs e

errori dal registro sono presentati qui di seguito: informazioni da 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", a monte: "https://127.0.0.1: {porta}", host: "{Server nome} "

Nginx utilizza molti file .conf memorizzati nella posizione conf.d.

address1.conf (Questo funziona):

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

file di address2.com conf (questo non):

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

La cosa divertente è che ho un'altra applicazione a lavorare sullo schema addr3.com -> addr3.com:port e il reindirizzamento funziona perfettamente. L'unica

la differenza tra address2.conf e address3.conf è la porta su cui funzionano le applicazioni. Ogni indirizzo utilizza https, la porta 443 è aperta sul firewall.

Spero che la mia descrizione sia sufficientemente dettagliata, se non solo fammi sapere. Sono stato alle prese con questo problema per un paio di giorni e non ho trovato nessun consiglio o soluzione adatta a me.

Apprezzerei qualsiasi aiuto.

risposta

1

Il problema potrebbe essere con SELinux. Controlla se funziona con sestatus. Dal momento che alcuni inoltro sta lavorando per voi, questo comando potrebbe essere ridondante, ma altri potrebbe richiedere che:

sudo setsebool -P httpd_can_network_connect 1 

Per abilitare forwaring per porte specifiche, che potrebbe essere il tuo problema, eseguire questo comando:

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

Sostituire 8088 con la porta in questione.

Il comando semanage potrebbe non essere trovato. Il modo in cui lo installi è distro dipendente, ma puoi molto probabilmente trovare una soluzione a google.

Problemi correlati