2011-03-17 23 views
14

Tengo nginx ejecutándose en mi servidor, escuchando el puerto 80 y 433. Sé que nginx tiene varias formas de reenvío de puertos que me permiten reenviar solicitudes como: http://myserver:80/subdir1 a alguna dirección como: http://myserver:8888.¿Es posible reenviar la solicitud de conexión NON-http a algún otro puerto en nginx?

Mi pregunta ¿es posible configurar Nginx para que yo pueda enviar NO solicitud -http (sólo los conexión TCP normal) a algún otro puerto? Es muy fácil probar si se trata de una solicitud http porque los primeros bytes serán "GET" o "POST". Aquí está el ejemplo.

El cliente conectado a nginx. El cliente envía:

a. HTTP get request: "GET/HTTP 1.1": alguna regla para HTTP

b. Cualquier octeto que no pueda reconocerse como encabezado HTTP: reenviarlo a otro puerto, por ejemplo, 888, 999, etc.

¿Es técnicamente posible? ¿O sugerirías una forma de hacer esto?

Respuesta

3

Esto es técnicamente posible con seguridad.

Puede modificar proxies tcp de código abierto como el módulo nginx llamado nginx_tcp_proxy_module o HAproxy.

O puede escribir un módulo nginx similar al anterior para hacer esto por usted.

+0

¿Es necesario escribir una secuencia de comandos, o modificar algunos archivos de configuración, o recompilar nginx? – tactoth

+1

Necesita modificar el código del módulo nginx en sí mismo. Un poco difícil pero factible. – Zimbabao

+0

gracias. Haré más investigación aquí. – tactoth

0

si nginx proxy remoto con HTTP, su cliente podría usar el comando HTTP CONNECT, luego se conecta con el puerto remoto y reenvía todos los datos como "sin formato" (o al menos eso creo).

Cuestiones relacionadas