我在我的服务器上运行nginx,监听端口80和433.我知道nginx有多种端口转发方式,允许我将请求转发到http://myserver:80/subdir1之类的地址,例如:http://myserver:8888
我的问题是是否可以配置nginx以便我可以将 NON -http请求(只是那些普通TCP连接)转发到其他端口?测试它是否是一个http请求非常容易,因为第一个字节将是“GET”或“POST”。这是一个例子。
客户端连接到nginx。 客户发送:
一个。 HTTP get请求:“GET / HTTP 1.1”:HTTP的一些规则
湾任何无法识别为HTTP标头的字节:将其转发到其他端口,例如888,999等。
技术上可行吗?或者你会建议一种方法来做到这一点?
答案 0 :(得分:41)
从nginx 1.9.0开始可能是
http://nginx.org/en/docs/stream/ngx_stream_core_module.html
沿着这些方向的东西(这位于nginx.conf
的顶层):
stream {
upstream backend {
server backend1.example.com:12345;
}
server {
listen 12345;
proxy_pass backend;
}
}
答案 1 :(得分:4)
答案 2 :(得分:0)
如果使用HTTP进行nginx远程代理,您的客户端可以使用HTTP CONNECT命令,然后它与远程端口连接并将所有数据转发为“原始”(或者至少我认为是这样)。