Estoy usando nginx para servir una instancia de aplicación PHP, y también al mismo tiempo ejecuto una aplicación Ratchet para escuchar una conexión websocket. El problema es que ambas instancias están utilizando el mismo puerto (80).
¿Cómo configuro el servidor para poder servir a ambos?
Editar: Acabo de volver a ver que la pregunta ha sido rechazada varias veces, comprensiblemente, realmente no hice la pregunta de una manera clara. Pido disculpas por eso. Sin embargo, hice mi diligencia debida. Trataré de aclarar lo que estaba preguntando, es posible que haya entendido mal algunos aspectos del protocolo websocket, en cuyo caso, corríjame:
Sé bien que solo puede haber un proceso escuchando un puerto en particular, lo que realmente tengo algún problema es entender todo el asunto del websocket, por lo que entiendo, una solicitud de websocket comienza con un protocolo de enlace HTTP, después del cual habrá un mecanismo para 'actualizar' esa sesión al puerto específico.
Por lo que leí, parece que este mecanismo de actualización es manejado por el servidor web. Entonces, ¿cómo configuro nginx para lidiar con este proceso?
Con todo, lo único que me preocupa de ejecutar el servidor websocket en un puerto que no sea 80, es la posibilidad de que el puerto esté bloqueado. ¿Es esta preocupación infundada? ¿Algún consejo sobre cómo debería configurar esto?
fuente
Respuestas:
Una pregunta terriblemente escrita, pero el término que estaba buscando era proxy inverso.
Básicamente, al igual que nginx puede reenviar diferentes solicitudes a varias instancias de la aplicación web en función de la ruta o el nombre de host, también se puede configurar para "reenviar" la solicitud a una instancia de servidor websocket. p.ej:
Las solicitudes HTTP
http://hostname
serán atendidas en la página html habitual, mientras que la conexión websocketwss://hostname/socket
se enviará a la instancia de websocket en el mismo servidor que escucha en el puerto 8000.fuente
proxy_read_timeout
yproxy_write_timeout
para evitar desconexiones por inactividad.Un servidor no puede tener dos programas diferentes escuchando en el mismo puerto / dirección IP. De lo contrario, ¿cómo se enrutaría el tráfico a la aplicación XYZ si varias aplicaciones pudieran estar vinculadas al mismo puerto?
Puede obtener más información sobre los puertos desde el puerto (redes de computadoras)
Lo que debe hacer es una de las siguientes opciones:
Su firewall solo debe configurarse de acuerdo con lo que configuró.
fuente
Tienes dos opciones:
fuente