我需要将以/ RPC2开头的HTTP请求重定向到端口A,并将通过TCP的原始套接字连接重定向到端口B。如何使用NGINX做到这一点?
基本上,工作流程如下:
但是,与/ import_image相关的请求是基于TCP的Python原始套接字。代码如下:
connection = socket.socket(socket.AF_INET, socket.SOCKET_STREAM)
connection.connect((host, port))
connection.sendall(some data)
response = HTTPResponse(connection)
response.begin()
我已经尝试过了:
http {
server {
listen C;
server_name localhost;
location /RPC2 {
proxy_pass http://0.0.0.0:A;
}
location /import_image {
proxy_pass http://0.0.0.0:B;
}
}
}
它与/ RPC2路径一起使用时效果很好,但与/ import_image路径卡住了。程序挂在response.HTTPResponse(connection)
上,后端服务器再也没有收到请求。
这:
stream {
server {
listen 0.0.0.0:C;
proxy_pass 0.0.0.0:B;
}
}
使用TCP代理,我可以为端口B提供服务,但是无法为端口A提供服务。
有什么办法可以同时重定向http和非http原始套接字?谢谢。