如果是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.php100.com .... } |
也可以直接这样写:
代码如下 | 复制代码 |
server{ listen 114.163.186.110; server_name www.hzhuti.com .... } server{ listen 99.69.16.3; server_name www.php100.com .... } |
这样独立的ip就被绑定到固定的域名上去了
q2
第一种方法是判断nginx核心变量host(老版本是http_host):
代码如下 | 复制代码 |
server { server_name www.hzhuti.com hzhuti.com ; if ($host != 'www.hzhuti.com' ) { rewrite ^/(.*)$ http://www.hzhuti.com/$1 permanent; } ... } |
第二种方法:
代码如下 | 复制代码 |
server { server_name hzhuti.com; rewrite ^/(.*) http://www.hzhuti.com/$1 permanent; } |
我用的是第一种方法,这两种方法中, permanent是关键,详细说明见nginx重定向规则说明。
last – 基本上都用这个Flag。
break – 中止Rewirte,不在继续匹配
redirect – 返回临时重定向的HTTP状态302
permanent – 返回永久重定向的HTTP状态301