食品安全网站建设,宁波建设网站哪家好,西部网站助手,怎样才能把网站做好转载说明#xff1a;如果您喜欢这篇文章并打算转载它#xff0c;请私信作者取得授权。感谢您喜爱本文#xff0c;请文明转载#xff0c;谢谢。 1. 前言
PostgreSQL默认只能本机连接#xff0c;若要在别的客户端远程连接pgsql#xff0c;则需要修改配置文件pg_hba.conf如果您喜欢这篇文章并打算转载它请私信作者取得授权。感谢您喜爱本文请文明转载谢谢。 1. 前言
PostgreSQL默认只能本机连接若要在别的客户端远程连接pgsql则需要修改配置文件pg_hba.conf添加IPv4白名单。
如果在某些场景下pgsql前面有两层nginx做代理IPv4白名单该怎么配置呢pg数据库获取的clientIP分别又是什么呢 2. 模拟实验环境规划
准备4台服务器和本地Windows电脑pgAdmin工具分配如下
3. 实验环境搭建 在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工具。
4. 场景实验
实验分三个场景做测试
场景一客户端只能通过两层nginx做代理转发连接postgresql场景二客户端绕开nginx代理直连pgsql数据库场景三客户端可走nginx代理也可直连pg数据库
场景一客户端只能通过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测试结果 在服务器客户端102和Windows客户端pgAdmin工具均可通过nginx代理正常访问PG数据库。在配置任一nginxIP白名单情况下无论是通过nginx-64或者nginx-65连接PG数据库均可。 此时PG数据库通过pgAdmin工具可以直观看到只要是走nginx代理过来的连接数据库接收到的clientIP均为第二层nginx的IP地址也可以在postgresql数据库本身通过命令行 select * from pg_stat_activity; 查看。 如下图在client列中看到两个10.0.0.65的客户端连接分别是Windows客户端通过pgAdmin和服务器客户端102通过命令行psql -h 10.0.0.64 -p5432连接进来的最后一行IP为空白的记录是因为在pg数据库本身是登录状态。
场景二客户端绕开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数据库。
客户端102和Windows客户端均绕开2台nginx代理服务器直连pgsql。此时pgsql接收的客户端IP显示为真实的客户端IP
场景三客户端可走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。
pg数据库获取的clientIP则为场景一和场景二的结合体通过nginx代理访问的clientIP为nginx-65的IP直连的clientIP为客户端真实IP
实验结论
经过实验结论如下图
全文完