使用nginx 网站绑定独立IP方法

四月 12, 2010 by · Leave a Comment 

对于多个域名多个IP的服务器,有时候我们需要用户不能通过的IP直接访问网站。这有的时候是因为IDC机房的需要,有的时候是我们为了将网站直接隔绝开的需要。本文是想讨论Nginx下如何实现这样的设置。

如果是Apache的话比较好设定,可以用NameVirtualHost来指定哪个IP绑定哪个域名,但是nginx应该如何把ip绑定到域名商呢?Slicehost论坛上也有人讨论过如何绑定ip的问题。核心的问题就是,如果直接输入ip,nginx会把这个ip对应到哪个域名上呢?答案是随机的。如果想要在某个域名做为catchall的,可以设定如下规则:

server{
listen 80 default;
....
}

那么如何绑定独立IP呢?由于ip信息其实是在在NGINX官方HTTPcore Listen的说明文档上也提到了这个是用方法,可以比较方便的是使用如下

server{
listen 99.69.16.3:80;
server_name www.inginx.com
....
}

也可以直接这样写:

server{
listen 114.163.186.110;
server_name www.abc.com
....
}
server{
listen 99.69.16.3;
server_name www.abe.com
....
}

这样独立的ip就被绑定到固定的域名上去了。

很多朋友说要绑定独立IP直接这样写:

listen 69.164.196.163:80;假如添加一个网站这样是没问题的,但如果你添加两个网站那么问题就来了,会提示端口被占用的错误.所以这样”:端口 “的写法对于多网站多IP显然是行不通的.查看了官方文档得出了答案,官方地址为:http://wiki.nginx.org/NginxHttpCoreModule#listen

写法有如下几种

listen 127.0.0.1:8000;listen 127.0.0.1;listen 8000;listen *:8000;listen localhost:8000;但是看到官方说If only address is given, the default port is 80.也就是跟”IP:端口”是一样的道理,但加上端口就不行,去掉端口就OK,很是奇怪,不过最终问题得以解决.直接这样写就OK 了

About admin

注意:

1、本站启用了审核机制,你的留言可能稍后才会显示,请不要重复提交,谢谢。
2、留言时的头像是Gravatar提供的服务。想设置的看这里
3、评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。

To submit your comment, click the image below where it asks you to...
Clickcha - The One-Click Captcha