首页 > nginx > nginx rewrite重写非www前缀域名到www前缀域名

nginx rewrite重写非www前缀域名到www前缀域名

2013年3月5日 发表评论 阅读评论

一直以来我都是只解析blog.redis.com.cn,没有启用nginx.cn

早上看到laughing 同学给我发的邮件

直接在浏览器地址栏输入 nginx.cn 无法访问,DNS查找失败,由于您没有对域名做A记录解析 所以无法访问!

强烈建议 站长 对nginx.cn做A记录域名解析 这样可以省去输入www的麻烦,更加人性化 望采纳!!!
----------- laughing 

 

我就像按照nginx 301永久重定向配置 的方法去做

在配置文件中修改配置为

kill -HUP nginx进程id

重启之后打开浏览器访问nginx.cn,一直返回502 bad gateway

开始我以为是nginx.cn的dns解析没生效,ping了一下显示已经解析生效

然后我wget nginx.cn 出现301递归重定向,在循环了20次之后退出


 

 

仔细看了下if的相关文档,我发现if的使用是存在陷阱的:
第一个是,if ($host ~* nginx.cn)会匹配nginx.cn 和blog.redis.com.cn两个,这样写的结果就是造成上面的结果。
另外一个最重要的原因是,每次请都需要检查if,严重降低nginx的效率。
最好的办法是增加两个server配置

因此我在我的配置中增加了如下配置,就可以使用nginx.cn跳转到blog.redis.com.cn了。
server {
server_name nginx.cn;
return 301 $scheme://blog.redis.com.cn$request_uri;
}

分类: nginx 标签: , ,
  1. 2015年8月12日11:07 | #1

    学习了,转载了

  2. Rin Satsuki
    2014年4月17日11:40 | #2

    为什么非要用正则

    if ($host != 'blog.redis.com.cn' ) {
    rewrite ^/(.*)$ http://blog.redis.com.cn/$1 permanent;
    }

  1. 本文目前尚无任何 trackbacks 和 pingbacks.