2012-04-16 33 views
10

Tengo nginx configurado para proxy de tráfico https a un servidor http que se ejecuta en la misma máquina.Proxy Nginx https a http en puerto no estándar?

Todo funciona bien cuando configuro nginx para escuchar/proxy desde el puerto https 443. Pero realmente quiero escuchar en un puerto no estándar. Cuando configuro un puerto no estándar, nginx recibe la solicitud y la envía a mi servidor http, como debería, pero el servidor responde con un redireccionamiento HTTP de vuelta al navegador que le indica que redirija a 'https: // servidor. com/someurl ". Me refiero a que la URL de redirección se ve bien, excepto que falta el puerto correcto. ¿Me falta un encabezado HTTP que debo configurar en el proxy?

Específicamente estoy ejecutando una instancia http de Pistas .; http://getontracks.org si importa

Mi (que trabajan en el puerto estándar) de configuración del servidor nginx:

location /{ 
    proxy_pass http://localhost:50000; 
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; 
    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-Proto https; 
    proxy_redirect off; 
} 

Respuesta

1

Th. es más un problema de la aplicación que se ejecuta en el host ascendente (Pistas), no de la configuración del servidor web (a menos que la configuración del servidor web ascendente contenga reglas de reescritura, por supuesto). Diferentes aplicaciones manejan estas situaciones de manera diferente: algunas requieren un parámetro de configuración explícito que les indique la URL real a la que se puede llegar, algunos usan ciertos encabezados HTTP, otros usan otros encabezados HTTP.

As Tracks es una aplicación de Rails que podría terminar obteniendo respuestas más informadas si agrega una etiqueta correspondiente a su pregunta.

+0

Gracias. Encontré algunas publicaciones en el foro que sugerían establecer un encabezado HTTP X-Forwarded-Port incluso aunque pareciera aún más un encabezado 'no estándar' no estándar. Intenté configurar eso en la configuración nginx sin suerte. Supongo que de todos modos, como dices, que la aplicación que se ejecuta en el host de origen debe tener en cuenta y tomar medidas en algo así. – kenen

24

El problema se deriva de la línea -

proxy_set_header Host $host; 

Su servidor web (WEBrick) a su vez está incluyendo esta hora de emitir la respuesta de redirección.

Se puede cambiar para incluir el puerto no estándar -

proxy_set_header Host $host:$server_port; 

que debe resolver este.

+0

Muy bien. Esto resolvió mi problema con la aplicación del matraz corriendo detrás del proxy inverso nginx tratando de generar la URL adecuada. puerto no estándar como se describe en [flask snippet 35] (http://flask.pocoo.org/snippets/35/) sin necesidad de tocar ese fragmento. –

Cuestiones relacionadas