Nginx Config: Front-End Reverse Proxy do innego portu

22

Mam mały serwer WWW, który obsługuje żądania na porcie 5010 zamiast 80.

Chciałbym użyć nginx jako serwera proxy frontonu do otrzymywania żądań na porcie 80, a następnie pozwolić, aby te żądania były obsługiwane przez port 5010.

Pomyślnie zainstalowałem nginx i działa on płynnie na Ubuntu Karmic.

Ale moje próby rekonfiguracji domyślnego pliku nginx.conf nie powiodły się.

Próbowałem dołączyć do dyrektywy serwera argument Listen dla portu 5010.

Próbowałem także dyrektywy proxy_pass.

Wszelkie sugestie dotyczące zmian, które należy wprowadzić, lub dyrektyw, które należy ustawić, aby umożliwić tylko przekierowanie portów.

Ted Karmel
źródło

Odpowiedzi:

22

Zakładam, że nginx nie jest serwerem nasłuchującym na porcie 5010 i 80, prawda? Czy coś innego nasłuchuje na 5010 i chcesz mieć serwer proxy nginx na tym serwerze?

Jeśli tak jest, oto fajna przykładowa konfiguracja, z której korzystałem w przeszłości:

server {
        listen       80;
        server_name  <YOUR_HOSTNAME>;
        location / {
            proxy_pass         http://127.0.0.1:5010/;
            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;

            client_max_body_size       10m;
            client_body_buffer_size    128k;

            proxy_connect_timeout      90;
            proxy_send_timeout         90;
            proxy_read_timeout         90;

            proxy_buffer_size          4k;
            proxy_buffers              4 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;
        }
}

Wierzę, że powinno to osiągnąć to, czego szukasz. Powodzenia!

vmfarms
źródło
nie działa to na Macu Brew Nginx. Musisz dodać blok http {} otaczający serwer, w przeciwnym razie: nginx: [emerg] dyrektywa „server” nie jest tutaj dozwolona
muenalan
13

Całkiem minimalistyczny - pozostawiłem ustawienia proxy jako domyślne, ale możesz zajrzeć do niego, aby dostosować się do twoich potrzeb.

# NGINX configuration

# System configuration ##################
worker_processes  3;
events {
    worker_connections  1024;
}
user nobody;

# Web configuration #####################
http {
    server {
        listen 80 default;
        location / {
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header   Host             $host;

            proxy_pass http://127.0.0.1:5010/;

        }
    }
}
tylerl
źródło
2
Tyler - twoje minimalne rozwiązanie jest dobre. Właśnie tego chciałem. Dałbym ci punkty, gdybym mógł, ale wciąż nowy w przypadku błędu serwera
Ted Karmel,