4 个 Nginx 跳转神技巧!解决文件不存在、HTTP 转 HTTPS 等场景,运维必备干货
在 Web 服务运维中,Nginx 的跳转配置是处理流量分发、优化访问体验、保障服务安全的核心技能。无论是用户访问不存在的文件时的友好引导,还是强制 HTTP 流量切换到 HTTPS 加密通道,甚至根据设备类型、访问 IP 精准分流 —— 掌握这些跳转技巧,能让你轻松应对 80% 的运维场景。今天就带大家拆解 4 个高频 Nginx 跳转配置,附完整代码 + 实战场景,新手也能直接套用!
1 客户分流:根据客户端类型跳转
PC 端和移动端用户的访问需求不同(如移动端适配 H5 页面),通过识别 User-Agent(设备标识),自动将手机用户跳转到移动端域名(如m.a.com),PC 用户保留原访问地址。
1. server {
2. listen80;
3. server_name a.com;
4. root /opt/nginx/html;
5. #判断user_agent是不是手机,是手机跳转到m.a.com
6. if ($http_user_agent ~* "android|iphone|ipad"){
7. #$1是只前面括号里面的内容,既跳转时附带请求url
8. rewrite ^/(.*)$ http://m.a.com/$1;
9. }
10.}
$http_user_agent:Nginx 内置变量,存储客户端的 User-Agent 信息; ~:正则匹配标记,表示不区分大小写(如Android和android都能匹配); rewrite ^/(.)$:正则匹配所有请求路径,(.)捕获路径后缀并保存为变量$1;
2 安全管控:根据IP跳转
场景 1:内部系统(如后台管理系统)仅允许公司内网 IP 访问,外部 IP 跳转到登录页或提示页面;
场景 2:网站临时维护,指定运维人员访问,客户暂时跳转至提示页;
1. server {
2. listen80;
3. server_name a.com;
4. root /opt/nginx/html;
5. #设置变量并赋值0
6. set $ip 0;
7. #判断访问ip是不是运维用的ip
8. if ($remote_addr = 192.168.109.1){
9. #如果是运维ip,设置ip的值为1
10. set $ip 1;
11. }
12. #判断ip的值是不是0,如果是0,则跳转到指定页面
13. if ($ip = 0){
14. rewrite ^(.*)$ /maintain.html break;
15. }
16. }
在网站维护时,指定运维人员ip可访问,非运维人员跳转到定制好的提示页面。
3 安全刚需:http自动跳转到https
如今 HTTPS 已成为网站标配,不仅能避免浏览器 "不安全" 警告,还能保护用户数据传输安全。通过 Nginx 配置实现全站 HTTP 自动跳 HTTPS,无需用户手动输入协议。
1. server {
2. listen80;
3. server_name a.com;
4. root /opt/nginx/html;
5. #注意跳转变量的设置,带$request_uri跳转后用户访问的连接不变
6. return302 https://$server_name$request_uri;
7. }
8. server {
9. listen443 ssl;
10. server_name a.com;
11. ssl_certificate /opt/nginx/conf.d/ssl/server.crt;
12. ssl_certificate_key /opt/nginx/conf.d/ssl/server.key;
13. location / {
14. root /opt/nginx/html;
15. }
16. }
$server_name自动替换为配置的域名
$request_uri 拼接上用户请求的url
4 友好容错:访问页面不存在时跳转至首页
用户访问网站上已删除的文件(如/static/old.jpg)或错误路径时,直接返回 404 页面会让用户流失。通过配置跳转到首页,提升容错性。
1. server {
2. listen80;
3. server_name a.com;
4. root /opt/nginx/html;
5. #判断请求文件是否存在
6. if (!-e $request_filename){
7. #不存在跳转到首页
8. rewrite .* http://$server_name/index.html;
9. }
10.}
文章参考来源于网络:https://mp.weixin.qq.com/s/rjS8wijl4OPy3U6V48qz9w (如有侵权,请联系删除。)
浙公网安备 33010602011771号