加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

nginx的proxy_pass到$host的问题

(2011-09-16 13:43:36)
标签:

nginx

proxy_pass

host

502

不能解析

it

分类: 工作日志

nginx-1.0来做反向代理,以下配置:

#(配置A,简称A)
resolver 192.168.1.251; #内部DNS服务器

server {
        listen          111.222.333.444:80;
        server_name     *.qwemgh.com;

        location / {
            proxy_pass  http://$host;
        }
}

运行一些日子,发现有个问题,一些用/etc/hosts来解析的域名,在上面的配置下不生效。 xxx.qwemgh.com 在内部DNS上没有,我写在/etc/hosts文件中了,但是在询问时报502错误,error.log 下  xxx.qwemgh.com could not be resolved (3: Host not found)。说明没有去读/etc/hosts。

但是如果用下面的写法就可以用:

 

#(配置B,简称B)
#resolver 192.168.1.251; #内部DNS服务器

server {
        listen          111.222.333.444:80;
        server_name     *.qwemgh.com;

        location / {
            proxy_pass  http://xxx.qwemgh.com;
        }
}

说明还是有读取/etc/hosts文件得。上面的配置也适用于读取/etc/resolv.conf


至于两个配置文件的区别个人认为可能是B配置文件是写死了域名,在nginx启动时会去操作系统中的/etc/hosts /etc/resolv.conf 等中读取,进行解析,然后常驻内存中。
而配置A,是用变量$host,在nginx运行中,没法去一直读去/etc/hosts /etc/resolv.conf,只能是根据配置文件去读resolver命令指定的DNS服务器。
#个人理解,水平有限,不一定准确,高人勿怪。


A配置还会有个DNS单点问题,请写:http://blog.sina.com.cn/s/blog_57c70e190100xzs3.html

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有