Configuración de Nginx: proxy inverso frontal a otro puerto

22

Tengo un pequeño servidor web que atiende solicitudes en el puerto 5010 en lugar de 80.

Me gustaría usar nginx como proxy front-end para recibir solicitudes en el puerto 80 y luego dejar que esas solicitudes sean manejadas por el puerto 5010.

He instalado nginx con éxito y funciona sin problemas en Ubuntu Karmic.

Pero mis intentos de reconfigurar el nginx.conf predeterminado no han tenido éxito.

Intenté incluir en la directiva del servidor el argumento de escucha para el puerto 5010.

También probé la directiva proxy_pass.

Cualquier sugerencia sobre los cambios que deben hacerse o las directivas que deben establecerse para tener solo el reenvío de puertos

Ted Karmel
fuente

Respuestas:

22

Supongo que nginx no es el servidor escuchando en el puerto 5010 y 80, ¿correcto? ¿Algo más está escuchando en 5010 y desea tener un proxy nginx para ese servidor?

Si ese es el caso, aquí hay una buena configuración de muestra que he usado en el pasado con éxito:

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

Creo que eso debería lograr lo que estás buscando. ¡Buena suerte!

vmfarms
fuente
esto no funciona en macOS brew nginx. Debe agregar un bloque http {} que rodea al servidor, de lo contrario: nginx: la directiva [emerg] "server" no está permitida aquí
muenalan
13

Bastante minimalista: dejé la configuración de proxy por defecto, aunque es posible que desee verla para ajustarse a sus necesidades.

# 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
fuente
2
Tyler: tu solución mínima es buena. Eso es lo que quería. Te daría puntos si pudiera, pero todavía es nuevo en el servidor por defecto
Ted Karmel