注意!!!
虽然这个配置能达到预期的效果,但是这个配置有 301 问题,暂时没有找到问题根源。
还是对 Nginx 的具体规则不了解。alias,rewrite, redirect 得重新学习下。
需求场景
通过修改本地 hosts 文件,将目标域名的 IP 指向我的服务器,转发所有请求。
同时,
- 拦截指定 API 接口,返回特定的内容。参考了好多年之前写的 Nginx 模拟 Backbone 请求的 JSON 接口
- 修改部分 html,js 以达到修改界面的效果
- 中转 websocket 请求
存在的问题
- 几个 alias 用的不对,会导致请求 301 到带斜杠后缀的链接。但好在能正常运行
- post 请求无法返回指定文件的内容。但是基于上面错误配置,会将 post 请求 301 到 get 请求,居然正常了。。。
- alias 应该用于目录的处理。所以才会缀上斜杠后缀
- excel 下载在 chrome 上正常下载,但是在 edge 上无法下载完整,似乎 edge 的安全策略有问题
配置
server {
listen 80;
server_name www.some_domain.com;
location ^~ /maintain/api1 {
default_type application/json;
index api_result.json;
alias /home/user1/sunzhongwei.com;
}
location ^~ /maintain/exportExcel {
expires -1;
add_header Cache-Control no-store;
default_type application/msexcel;
index demo.xlsx;
alias /home/user1/sunzhongwei.com;
}
location = /maintain/main.html {
default_type text/html;
index main.html;
alias /home/user1/sunzhongwei.com;
}
location ^~ /maintain/js/some.js {
default_type application/javascript;
index fault.js;
alias /home/user1/sunzhongwei.com;
}
# websocket
location ^~ /rangeDataItem {
proxy_pass http://www.some_domain.com;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
}
location / {
proxy_pass http://www.some_domain.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
参考
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式