我有一个网站,它通过用户的浏览器发送流量到Redis和PostgreSQL Docker容器。
在测试环境中,配置了flask应用程序,以便流量流向:
红名单://xxx.xxx.xxx.xxx:6379和
网址://www.example.compostgres@xxx.xxx.xxx.xxx:5432/table
我遇到的问题是生产环境依赖NGINX来完成所有的路由,而在测试环境中,没有路由,所有的东西都直接发送。当前的NGINX proxy_pass配置如下所示:
代理_通过http:www.example.com:[端口]xxx.xxx.xxx:[port]
我认为问题在于这两个服务都依赖TCP而不是HTTP,但是请求是作为HTTP请求路由的。
- 因此,我的问题是:**我可以将proxy_pass设置为使用redis://xxx.xxx.xxx:6379而不是http://xxx.xxx.xxx:6379吗?或者这是需要以不同的方式完成的事情吗?有许多其他服务依赖于此相同的NGINX示例,我不想破坏任何东西。
先谢谢你。
1条答案
按热度按时间dz6r00yl1#
您可以将NGINX配置为侦听端口6379和5432,然后配置到redis和postgres后端的TCP代理。
如果你想使用tcp而不是http/s来传递它们的流量,你只需要更新你的NGINX配置来包括每个后端服务“postgres”和“redis”的服务器块。
所以理论上你的应用会使用
NGINX_SERVER_IP_ADDR_OR_HOSTNAME:6379
连接Redis,使用NGINX_SERVER_IP_ADDR_OR_HOSTNAME:5432
连接postgres。有关TCP负载平衡的详细信息,请参阅文档:https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/