开发者社区> 科技小能手> 正文

一次Nginx修改跳转的实例

简介:
+关注继续查看

今天公司运营部发来需求,说为了方便百度搜索,需要把一个叫www.life1.cc  的域名做301跳转到www.lechange.com  。


由于life1.cc不是我公司的域名,所以就跟对方公司的运维联系,拜托人家把这个域名绑定到我公司的nginx服务器上,绑定完之后,在我公司的nginx服务器的配置文件里加一条rewrite 301的语句,然后reload一下就可以了,感觉很简单。


在确认域名已经绑定到公司的nginx之后,我就登陆nginx,找到nginx.conf,发现里面已经include很多配置文件,节选配置如下:

1
2
3
4
5
6
7
8
9
10
        #include upstream
        include upstream.conf;
         
        # include servers
        include rs.conf;
        include web-cn.conf;
        include web-com.conf;
        include dms-smsgw.conf;    
         
}

既然是要跳转到www.lechange.com  ,就打开web-com.conf,里面server段是这么写的:

1
2
3
4
5
6
7
server {
        #web
        listen 80;
        listen 443 ssl;
        server_name lechange.com lechange.com:443 *.lechange.com *.lechange.com:443;
        chunked_transfer_encoding off;
        proxy_buffering off;

找到“location=/”字段做一个  rewrite,如下:

1
2
3
4
5
6
location = / {
           #root /mnt/hswx/nginx/html/;
           #index index.html;
    #rewrite ^/    redirect;   #之前一直是302跳转,于是把这个注释
    rewrite ^/   permanent;    #这个是新加的301
        }


保存退出,reload nginx,打开浏览器,然后在地址栏里输入www.life1.cc  ,发现的确跳转去了www.lechange.com ,但是通过F12 查看,跳转方式还是302,如图:

wKiom1j_F4aRS4DAAAYKaYUBZWI662.png


清除了缓存,刷新界面但是还是302,而转用#curl看也是302,如图:

wKiom1j_F9PgHJYxAAB_dPAoe_8105.png


这就搞得很蒙圈了,明明在配置文件里面把301 permanent加进去了,为什么不出现301永久重定向?


然后就怀疑是不是以前在阿里的域名解析台里有过什么动作,但是查来查去也没什么收获,里面只有对www.lechange.com 的域名解析,可见重点还是要查一下nginx的配置。


后来发现了,原来nginx.conf里include字段是顺序是这样的:

1
2
        include web-cn.conf;
        include web-com.conf;

也就是说目标的网站如果是com的话,就会走web-com.conf,如果网站是cn的话就会走 web-cn.conf,但是我们这里需要修改的网站是www.life1.cc ,这个是以cc结尾的,既不是com也不是cn,那么conf配置会按照上下顺序去以 web-cn.conf为准。


#vim web-cn.conf,看到里面的server的配置: 

1
2
3
4
5
6
7
server {
        #web
        listen 80;
        listen 443 ssl;
        server_name lechange.cn lechange.cn:443 *.lechange.cn *.lechange.cn:443;
        chunked_transfer_encoding off;
        proxy_buffering off;


然后在下面更改了rewrite: 

1
2
3
4
5
6
        location = / {
                #root /mnt/hswx/nginx/html/;
                #index index.html;
                rewrite ^/ https://www.lechange.com permanent;
        }
}


这个时候在浏览器重新尝试www.life1.cc ,果然301 永久重定向成功!

wKioL1j_OFiwjhxAAAYBK2_U5Y0098.png


但是细心的朋友可能会问了,文章开头的nginx.conf的include字段里明明是rs.conf最高,web-cn.conf排名是第二的,为什么不会按上下顺序去走rs.conf的配置呢?


原因是因为rs.conf里面监听的不是80端口...所以压根不会去匹配。


补充,如果在nginx本机上使用“#curl 域名:端口号”查看网页的情况,选择配置文件是“先匹配端口号,然后查看servername”;而使用“#curl IP:端口号“查看网页情况,默认选择的配置文件是匹配端口号的第一个配置文件。


感谢大华股份研发中心大数据研究院祝青雷同志解惑,碉堡了!




 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1919371

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python编程:uWSGI+nginx配置flask实例
Python编程:uWSGI+nginx配置flask实例
92 0
篇二:Nginx配置说明及实例演示
篇二:Nginx配置说明及实例演示
184 0
Nginx配置实例
反向代理、负载均衡、动静分离的演示和配置。
124 0
Python编程:uWSGI+nginx配置flask实例
Python编程:uWSGI+nginx配置flask实例
113 0
Nginx 跳转实例
下面是我工作中遇到的一些rewrite示例。提供给大家分享 正则表达式匹配,其中: ~ 为区分大小写匹配 ~* 为不区分大小写匹配 !和!*分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配,其中: -f和!-f用来判断是否...
2468 0
Ansible-playbook roles安装nginx实例(学习笔记二十六)
1、nginx包相关信息: nginx_user: www                        nginx用户 nginx_port: 80                         nginx监听端口 nginx_web_dir: /data/webroot/nginxnginx的目录 nginx_version: 1.
1055 0
nginx 代理http配置实例
#user nginx; worker_processes 5; #error_log /var/log/nginx/error.log warn; #pid /var/run/nginx.
1617 0
+关注
科技小能手
文章
问答
视频
相关电子书
更多
CentOS Nginx PHP JAVA多语言镜像使用手册
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载