nginx统一域名的方法

需求:test.com会被重定向到www.test.com,同理test.com/post/1也会被重定向到www.test.com/post/1

last – 基本上都用这个Flag
break – 中止Rewrite,不再继续匹配
redirect – 返回临时重定向的HTTP状态302
permanent – 返回永久重定向的HTTP状态301

实现一

 

修改nginx.conf文件,内容如下:

#只作test.com转向www.test.com
server {
  listen 80;
  server_name test.com;
  access_log off;
  rewrite ^ http://www.test.com$request_uri permanent;
}

#www.test.com主要配置
server {
  listen 80:
  server_name www.test.com;
  #配置内容...
}

算是比较好的方案。

优点
只有访问test.com时才会重定向到www.test.com。
访问www.test.com不受server test.com rewrite的影响。

缺点
要用到两个server { }

实现二

 

修改nginx.conf文件,内容如下:

server{
  listen 80;
  server_name test.com www.test.com
  if ($host != 'www.test.com) {
    rewrite ^/(.*)$ http://www.test.com/$1 permanent;
  }
}

优点
一个server{}解决了


缺点
不管访问test.com还是www.test.com,每个客户端nginx都要作一次if()的判断,访问域名是不是www.test.com,比较浪费资源。

猜你喜欢

转载自eric-gao.iteye.com/blog/759720