如果PostgreSQL有两层nginx代理...

网友投稿 856 2022-08-30

如果PostgreSQL有两层nginx代理...

如果PostgreSQL有两层nginx代理...

前言

PostgreSQL默认只能本机连接,若要在别的客户端远程连接pgsql,则需要修改配置文件pg_hba.conf,添加IPv4白名单。

如果在某些场景下,pgsql前面有两层nginx做代理,IPv4白名单该怎么配置呢?pg数据库获取的clientIP分别又是什么呢?

模拟实验环境规划

实验环境搭建

在10.0.0.66和10.0.0.102服务器分别搭建postgresql应用,搭建步骤可参考《PostgreSQL学习之部署与简单使用》 10.0.0.64和10.0.0.65服务器分别安装nginx。并修改nginx配置文件nginx.conf如下:10.0.0.64服务器修改nginx.conf,添加如下配置(注意:stream和http是同级的,即stream不要放在http{}中): #代理pgsql数据库 stream { upstream pgsql { server 10.0.0.65:5432; } server { listen 5432; proxy_connect_timeout 30s; proxy_timeout 30s; proxy_pass pgsql; }

10.0.0.65服务器修改nginx.conf,添加如下配置(注意:stream和http是同级的,即stream不要放在http{}中):

#代理pgsql数据库 stream { upstream pgsql { server 10.0.0.66:5432; } server { listen 5432; proxy_connect_timeout 30s; proxy_timeout 30s; proxy_pass pgsql; }

本地Windows电脑安装pgAdmin工具。

场景实验

场景一:客户端只能通过nginx代理连接数据库

pg_hba.conf文件中IPv4白名单配置:

此种场景,白名单只配置任意一台nginx代理的IP,不配置客户端IP,重启pgsql:

host all all 10.0.0.65/24 md5 #或者: #host all all 10.0.0.64/24 md5

测试结果:

场景二:客户端绕开nginx代理,直连pgsql数据库

pg_hba.conf文件中IPv4白名单配置:

此种场景,则可只配置客户端IP,不配置2台nginx代理的IP,重启pgsql:

host all all 192.168.0.36/24 md5 host all all 10.0.0.102/24 md5

测试结果:

通过nginx代理已无法进入pg数据库。

场景三:客户端可走nginx代理,也可直连pg数据库

pg_hba.conf文件中IPv4白名单配置:

此种场景,可配置服务器IP网段+两台nginxIP,也可以放开所有IP访问权限,重启pgsql:

host all all 0.0.0.0/0 md5

测试结果:

服务器客户端102和Windows客户端pgAdmin能通过nginx代理正常连接pgsql,也能绕过nginx直连pgsql。

实验结论

::: hljs-right

(全文完)

:::

::: hljs-center

:::

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:nginx+php负载均衡集群中的session共享方案(负载均衡 session)
下一篇:bzoj3545 [ONTAK2010]Peaks
相关文章

 发表评论

暂时没有评论,来抢沙发吧~