LEN

【转】Nginx解决“no resolver defined to resolve xxx.xxx”
server { listen 80; server_name *.b2b.sdy....
扫描右侧二维码阅读全文
21
2017/01

【转】Nginx解决“no resolver defined to resolve xxx.xxx”

server {
    listen       80;
    server_name  *.b2b.sdy.com;
     
    location / {
        if ($host ~* (.*)\.b2b\.sdy\.com)       {
           set $company $1;
 
           proxy_pass http://www.baidu.com/$company;
        }
}
 

如果使用域名作为反向代理的地址的话会在Nginx0.6.18以后的版本中都会提示“ no resolver defined to resolve ”的类似错误,而在proxy_pass 中直接设置地址却不会。

原因是Nginx0.6.18以后的版本中启用了一个resolver指令,在使用变量来构造某个server地址的时候一定要用resolver指令来制定DNS服务器的地址,所以解决这个问题的方法很简单:

在nginx的配置文件中的http{}部分添加一行resolver 8.8.8.8;即可

本文出自 “精忠报国” 博客,请务必保留此出处
http://xinsir.blog.51cto.com/5038915/1541612


**下文当中 配置项较多 请综合查看
**
最近发现将nginx跟php放在同一台服务器上压力挺大的。于是就做了个动静分离,把nginx和php分别部署在两台服务器上。

好景不长,发现后台验证码,死活刷不出来,只有一个裂图。

想了想该不会是动静分离的原因吧。登上服务器一看,果然nginx服务器上并没有生成这个图片,图片都存在了php服务器上。

这样想着,有没有什么办法能直接获取到后端呢。想着用proxy_pass代理到后端看看

location ~* /media/captcha/([a-z]*)/(.*)$ {
    proxy_pass http://proxy.test.com:88/captcha/$1/$2;
}

没想到代理后竟然报错502

于是查看日志

    2015/10/05 15:17:25 [error] 7589#0: *549967 no resolver defined to resolve proxy.test.com,
    client: 180.191.103.242, 
    server: www.test.com,                 
    request: "GET /captcha/base/299b5dd35f902f3b7502a157071f49bc.png HTTP/1.1", 
    host: "www.test.com"

发现很多这样的日志,google 之,原来是没有定义 reoliver

 location ~* /captcha/([a-z]*)/(.*)$ {
    resolver 8.8.8.8;
    proxy_pass  http://proxy.test.com:88/captcha/$1/$2;
}

这样一改就ok了。

由这个问题,还发现了一个其他的问题。也在这里做个记录吧。

当初这个动静分离之前,还想着做个反向代理。因为非80端口,转发。

首页打开倒是正常,但是样式全没了,图片也打不开。

server {
    listen       81;
    server_name  www.test.com; 
    access_log  logs/test.access.log;
    keepalive_timeout 90;
    client_max_body_size 4m;
    location / {
        proxy_redirect off;
        proxy_set_header Host $host:81; #这个地方要跟listen端口相同,否则很多页面就只是www.test.com:80 而不是81端口了。
        #以下两行为获取用户真实IP
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #一下设置防止php文件获取为502报错       
        proxy_set_header Connection "";
        proxy_connect_timeout 400s;     #连接后端服务器超时时间
        proxy_read_timeout 400s;        #后端服务器响应请求超时时间
        proxy_send_timeout 400s;        #后端服务器发送数据超时时间
        proxy_buffer_size 32k;          #代理请求缓存区大小
        proxy_buffers 4 64k;    #系统繁忙时可申请的proxy_buffers大小
        proxy_busy_buffers_size 128k; #系统繁忙时可申请的proxy_buffers大小
        proxy_ignore_client_abort on; #不允许客户端关闭连接
        proxy_pass http://192.168.0.10:81; 81端口后面,最好也不要再添加/;否则会引发一些想不到的问题
   }
}

原文地址不详 仅展示 转载地址 : http://www.xue163.com/334/1654/3346799.html

最后修改:2017 年 02 月 08 日 03 : 00 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论