NGINX proxy_pass到Redis和PostgreSQL Docker容器

yxyvkwin  于 2023-02-28  发布在  Redis
关注(0)|答案(1)|浏览(224)

我有一个网站,它通过用户的浏览器发送流量到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示例,我不想破坏任何东西。

先谢谢你。

dz6r00yl

dz6r00yl1#

您可以将NGINX配置为侦听端口6379和5432,然后配置到redis和postgres后端的TCP代理。
如果你想使用tcp而不是http/s来传递它们的流量,你只需要更新你的NGINX配置来包括每个后端服务“postgres”和“redis”的服务器块。

stream {
    # ...
    server {
        listen     6379;
        proxy_pass XXX.XXX.XXX.XXX:6379;
    }
    server {
        listen     5432;
        proxy_pass XXX.XXX.XXX.XXX:5432;
    }
}

所以理论上你的应用会使用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/

相关问题