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 (如有侵权,请联系删除。)

posted @ 2025-12-06 15:42  路远安  阅读(0)  评论(0)    收藏  举报