2015-08-10 25 views
5

Mam problem z przekierowaniem nginx. Pracuję nad Nginx 1.4.4 i mam dwa oddzielne przekierowania. Powinno działać na dwa sposoby: Pierwsze przekierowanie: Adres address1.com przekierowuje na adres address2.com -> Adres address2.com przekierowuje do addres2.com:1234, gdzie znajduje się aplikacja.502 Zła brama podczas przekierowywania na nginx

drugie przekierowanie jest bezpośrednio z ddress2.com: - address2.com przekierowuje do address2.com:1234

Teraz problem: - przekierowanie z address1.com do address2.com działa, ale address2.com na adres2.com:port nie działa. Kończy się błędem 502 Bad Gateway. Configs i

błędy z dziennika zostały przedstawione poniżej: Informacje z 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" upstream "https://127.0.0.1: {port}", host: „{serwer nazwa} "

Nginx używa wielu plików .conf przechowywanych w lokalizacji conf.d.

address1.conf (działa to):

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

plik address2.com conf (To nie):

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

Zabawne jest to, że mam inną aplikację pracuje na systemie addr3.com -> addr3.com:port i przekierowanie działają po prostu idealnie. Jedyną różnicą między adresem address2.conf i address3.conf jest port, na którym działają aplikacje. Każdy adres wykorzystuje https, port 443 jest otwarty na zaporze.

Mam nadzieję, że mój opis jest wystarczająco szczegółowy, jeśli nie tylko daj mi znać. Mam problem z tym problemem przez kilka dni i nie znalazłem żadnych wskazówek lub rozwiązań odpowiednich dla mnie.

Byłbym wdzięczny za każdą pomoc.

Odpowiedz

1

Problem może dotyczyć SELinux. Sprawdź, czy działa z sestatus. Ponieważ niektóre spedycja pracuje dla ciebie, to polecenie może być zbędny, ale inni mogą wymagać go:

sudo setsebool -P httpd_can_network_connect 1 

Aby włączyć forwaring dla określonych portów, co może być problem, uruchom polecenie:

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

Zamień 8088 na odpowiedni port. Nie można znaleźć polecenia semanage. Sposób instalacji jest zależny od dystrybucji, ale najprawdopodobniej możliwe jest rozwiązanie go przez Google.

Powiązane problemy