在现代 Web 开发和运维中,Nginx 是一个非常流行的高性能 Web 服务器和反向代理工具。通过合理配置 Nginx 的反向代理和重写规则,我们可以轻松实现请求转发、隐藏后端服务、优化 URL 结构等功能。本文将手把手教你如何配置 Nginx 实现反向代理,并结合 rewrite 指令完成 URL 重写,即使你是完全的新手,也能看懂并上手操作。
简单来说,反向代理就是客户端请求先发送到 Nginx 服务器,Nginx 再把请求“代理”给后端真正的应用服务器(比如 Node.js、Python Flask、Java Spring 等),然后把后端的响应返回给客户端。这样做的好处包括:
假设你有一个运行在 http://localhost:3000 的 Node.js 应用,你想通过访问 https://yourdomain.com 来使用它。只需在 Nginx 配置文件中添加如下内容:
server { listen 80; server_name yourdomain.com; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }} 保存配置后,执行 nginx -s reload 重载配置即可生效。现在所有访问 yourdomain.com 的请求都会被转发到本地 3000 端口的应用。
URL 重写是指在不改变用户看到的 URL 的前提下,内部将请求路径转换为另一个路径。这常用于 SEO 优化、旧链接跳转、API 路由调整等场景。
例如:用户访问 /api/users,但你的后端实际接口是 /v1/users,这时就可以用 rewrite 指令进行重写。
下面是一个典型场景:前端访问 /app/xxx,我们希望将其重写为 /xxx 并代理到后端服务。
server { listen 80; server_name yourdomain.com; location /app/ { # 将 /app/xxx 重写为 /xxx rewrite ^/app/(.*)$ /$1 break; proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }} 这里的关键是 rewrite ^/app/(.*)$ /$1 break;:
^/app/(.*)$:匹配以 /app/ 开头的路径/$1:将匹配到的部分(即 (.*))替换为根路径下的对应内容break:表示重写后停止处理后续 rewrite 规则,并继续当前 location 块中的其他指令(如 proxy_pass)| 标志 | 作用 |
|---|---|
last | 重写后重新匹配 location(类似 Apache 的 L 标志) |
break | 停止 rewrite 处理,继续当前 location 中的其他指令 |
redirect | 返回 302 临时重定向(浏览器地址栏会变) |
permanent | 返回 301 永久重定向 |
如果你把网站从 /old-page.html 迁移到了 /new-page/,可以用以下规则自动跳转:
location = /old-page.html { return 301 /new-page/;} 或者使用 rewrite:
rewrite ^/old-page\.html$ /new-page/ permanent; 通过本文,你应该已经掌握了 Nginx 反向代理 和 重写规则 的基本用法。无论是做 API 网关、前后端分离部署,还是处理 SEO 友好 URL,这些技能都非常实用。记住几个关键点:
proxy_pass 实现反向代理rewrite 修改内部请求路径break、last 或重定向标志nginx -t 检查语法希望这篇教程能帮助你顺利配置 Nginx!如果你在实践中遇到问题,欢迎查阅官方文档或在社区提问。
关键词:Nginx反向代理, Nginx重写规则, 反向代理配置, URL重写
本文由主机测评网于2025-11-30发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025111413.html