一次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

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
9月前
|
安全 网络协议 应用服务中间件
Nginx配置http跳转https
Nginx配置http跳转https
264 0
|
Java 应用服务中间件 PHP
Nginx中的location匹配和rewrite重写跳转
1、常用的Nginx正则表达式 2、location 3、rewrite 4、rewrite实例
1402 0
Nginx中的location匹配和rewrite重写跳转
|
6月前
|
负载均衡 应用服务中间件 网络安全
百度搜索:蓝易云【介绍Nginx、正向代理和实现反向代理的两个实例】
总结来说,Nginx是一个功能强大的Web服务器和反向代理服务器,可以通过正向代理实现内部员工访问外部互联网资源,通过反向代理实现负载均衡和SSL终端代理等功能。这些应用场景都能够提高性能、可靠性和安全性,使Nginx成为构建高效Web应用的重要工具之一。
68 2
|
4月前
|
负载均衡 安全 应用服务中间件
Nginx + Tomcat+HTTP/HTTPS实现负载均衡实例
Nginx + Tomcat+HTTP/HTTPS实现负载均衡实例
178 0
|
9月前
|
缓存 应用服务中间件 nginx
【Nginx】第六章 Nginx配置实例-动静分离
【Nginx】第六章 Nginx配置实例-动静分离
140 0
|
9月前
|
负载均衡 应用服务中间件 Linux
【Nginx】第五章 Nginx配置实例-负载均衡
【Nginx】第五章 Nginx配置实例-负载均衡
139 0
【Nginx】第五章 Nginx配置实例-负载均衡
|
9月前
|
网络协议 应用服务中间件 Linux
【Nginx】第四章 Nginx配置实例-反向代理
【Nginx】第四章 Nginx配置实例-反向代理
216 0
|
9月前
|
应用服务中间件 Linux 网络安全
Nginx反向代理实例
上一篇博客写了使用Nginx实现访问80端口转发到tomcat页面:使用Nginx实现反向代理(80端口转发到Tomcat)
|
11月前
|
应用服务中间件 nginx
Nginx:proxy_pass和try_files 301跳转带了端口
Nginx:proxy_pass和try_files 301跳转带了端口
370 0
|
12月前
|
前端开发 应用服务中间件 nginx
Nginx的反向代理自动301跳转避坑
当Web服务器为Nginx时,若浏览器访问的uri最后不带斜杠,如www.xxx.com.cn/aaa,当aaa是一个目录时,会产生301跳转,且自动将uri补全为www.xxx.com.cn/aaa/,最后添加一个/。当前端存在Nginx反向代理时,就会存在一个坑。
1762 0