文章目录
环境
系统平台:Linux x86-64 Red Hat Enterprise Linux 7
版本:4.5.8
症状
在Nginx的http模块中配置数据库,连接数据库失败。
问题原因
Nginx的配置主要分为几个部分,比如events、http、stream等。
http模块是用来处理HTTP和HTTPS流量的,也就是计算机网络OSI模型第七层应用层的协议。
而数据库协议比如HGDB的5866端口,属于第四层传输层的TCP协议。
Nginx处理第四层流量应该在stream模块里配置,而不是http模块。
解决方案
配置案例
1.修改Nginx配置文件
# nginx服务器IP:192.168.2.5
# 数据库服务器IP: 192.168.2.4
vi /etc/nginx/nginx.conf
#代理pgsql
stream{
upstream pgsql {
server 192.168.2.4:5866;
}
server {
listen 5877;
proxy_connect_timeout 30s;
proxy_timeout 30s;
proxy_pass pgsql;
}
}
2.开放端口
firewall-cmd --permanent --add-port=5877/tcp
firewall-cmd --add-port=5877/tcp
3.连接测试
psql -h 192.168.2.5 -p 5877 -U sysdba
highgo=# SELECT inet_server_addr();