nginx填坑之路(2)nginx 实现路径重写 rewrite$1
参考文档:
nginx 配置 rewrite$1
nginx path路径地址重写
Nginx实现路径重写rewrite指令
Nginx提供了rewrite指令,用于对地址进行重写,语法规则:
rewrite | "用来匹配路径的正则" | 重写后的路径 | [指令]; |
---|---|---|---|
rewrite | ^/job/(.*)1 | break |
问题场景再现:
说明:页面连接直接请求js是正常的,页面刷新请求的js路径就变了,两次请求js区别在于页面刷新请求的js路径多了一个当前目录:job 、platform
(这个问题是前端路由问题,不过nginx可以进行地址重写)
连接请求网址: http://172.20.162.29/job/static/js/SM.js
刷新请求网址: http://172.20.162.29/job/static/js/static/js/SM.js
连接请求网址: http://172.20.162.29/platform/static/js/SM.js
刷新请求网址: http://172.20.162.29/platform/static/js/static/js/SM.js
nginx进行路径重写 rewrite$1
说明:存在多个路径时需要添加多条重写记录,临时解决可以,后期优化由前端处理
server {
listen 80;
server_name localhost;
location /platform {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
rewrite ^/platform/(.*)$ $1 break;
proxy_pass http://172.20.162.29:80/$1;
}
location /job {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
rewrite ^/job/(.*)$ $1 break;
proxy_pass http://172.20.162.29:80/$1;
}
location / {
root /html/;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)