5
回答
nginx 非80端口反向代理连接不上sqlserver数据库问题求教
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

公司只有一个外网IP,现在还未申请开放80端口,想用nginx先做个反向代理

具体配置如下

域名*.abc.com -》外网IP(212.123.21.11) -绑定到-- 防火墙

防火墙上做端口映射 81-----内外192.168.1.19的80

192.168.1.19上安装nginx 做反向代理配置,分别指向 内部几台web服务器(192.168.1.123 ,192.168.1.124)

先说下规划 

xxx.abc.com:81 访问192.168.1.123的80

yyy.adc.com:81访问192.168.1.124的80

proxy_pass 到 http://192.168.1.123  对应的域名为xxx.abc.com

通过 xxx.abc.com:81 来访问192.168.1.123 对应的web服务器

总报数据库连接不上,数据库使用的是sql server 2005

同样配置的另外一台192.168.1.124上装了mysql 和php,通过yyy.adc.com:81 访问php连接mysql却是正常的,

试过去掉反向代理,直接通过防火墙端口映射到192.168.1.123的80端口,访问xxx.abc.com:81正常

感觉应该是nginx配置问题,无奈nginx不熟悉,那位大大能指教一二

附上nginx反向代理配置

proxy_connect_timeout 300s;
proxy_send_timeout 900;
proxy_read_timeout 900;
proxy_buffer_size 32k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
#proxy_redirect off;#关闭打开都试过
proxy_hide_header Vary;
proxy_set_header Accept-Encoding '';
#proxy_set_header Host $host;
proxy_set_header Host  $host:81;
proxy_set_header Referer $http_referer;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

举报
james
发帖于3年前 5回/1K+阅
共有5个答案 最后回答: 3年前
http代理和应用连不上数据库,这中间怎么可能存在因果关系。
--- 共有 1 条评论 ---
james我也感觉不应该有,但是去掉反向代理就正常了 另外刚才安装了squid做反向代理,也是正常的 应该还是nginx配置问题,或者代码有什么地方取服务器配置取不到吧 还在迷惑中 3年前 回复

你的php是不是没有装连接sqlserver的扩展,或者pdo的sqlserver的驱动?

--- 共有 1 条评论 ---
james那台连接不上的web是.net的,应该也不缺少东西,因为本机或者不通过反向代理访问都正常,我现在唯一怀疑的是 请求经过nginx转发以后,可能某个header不正确或者没有,而web服务器上可能用到这些东西了,所以报错,web服务上跑到代码是第三方厂商的,他们说是数据库连接不上,也没法验证,反正就曝出一个内部错误,没源代码,不清楚具体哪里出错了 最终换成squid做同步代理,目前看来正常 3年前 回复

引用来自“Lvfifi”的评论

192.168.1.123服务器上web页面代码连接sql2005的服务器地址,端口等等信息贴出来。
  <connectionStrings>
    <add name="AccessConnectionString" connectionString="database=dbtest;server=(local);user id=sssss;pwd=xxx@yy ;Connect Timeout=10" providerName="System.Data.SqlClient" />
  </connectionStrings>
--- 共有 4 条评论 ---
james回复 @Lvfifi : 是的,以后再查吧,谢谢了 3年前 回复
淡定的wo错误都看不到,那你这个情况无解了。 如果可能的话,让厂商提供他们认为是数据库错误的依据,分析一下。 3年前 回复
james原始错误看不到,只有个错误提示:系统超时,请重试 页面也加载出来了。。。就是报了个错误,厂商说是连不上数据库报错。。。 问厂商有没有错误日志可以查询,说是没有。。。 想查问题也没办法啊,哎 3年前 回复
淡定的wo看连接字符串是ok的。 web.config把错误显示打开。原始的网页报错信息贴一下 3年前 回复
顶部