app开发者平台在数字化时代的重要性与发展趋势解析
944
2022-08-30
如果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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~