Nginx proxy_pass 配置转发 / 路径
Nginx proxy_pass uri 的
/
路径详细介绍。
# Nginx 配置 proxy_pass 转发的 / 路径问题
在 nginx 中配置 proxy_pass 时,如果是按照^~匹配路径时,要注意 proxy_pass
后的 url
最后的 /
:
- 当加上了
/
,相当于绝对根路径,则 nginx 不会把 location 中匹配的路径部分代理走 - 如果没有
/
,相当于相对路径,则会把匹配的路径部分也给代理走
# 示例
# 有 /
location ^~ /proxy_api/
{
proxy_cache api_cache;
proxy_set_header Host api.ady.cn;
proxy_pass http://api.ady.cn/;
}
1
2
3
4
5
6
2
3
4
5
6
如上面的配置,如果请求的 url
是 http://your_domain/proxy_api/load.php
,会被代理成 http://api.ady.cn/load.php
# 无 /
location ^~ /proxy_api/
{
proxy_cache api_cache;
proxy_set_header Host api.ady.cn;
proxy_pass http://api.ady.cn;
}
1
2
3
4
5
6
2
3
4
5
6
如上面的配置,则会被代理到http://api.ady.cn/proxy_api/load.php
# 其他实现方式
当然,我们可以用如下的 rewrite 来实现 / 的功能:
location ^~ /proxy_api/
{
proxy_cache api_cache;
proxy_set_header Host api.ady.cn;
rewrite /proxy_api/(.+)$ /$1 break;
proxy_pass http://api.ady.cn;
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# 其他问题
# 跨域问题
location /abc/ {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' 'X-Requested-With';
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With' always;
proxy_pass http://<ip>:<port>/;
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# Forwarded 配置
location /abc/ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_pass http://<ip>:<port>/;
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# Referer policy 问题
location /abc/ {
# add_header 'Referrer-Policy' 'no-referrer-when-downgrade';
# add_header 'Referrer-Policy' 'unsafe-url';
# add_header 'Referrer-Policy' 'strict-origin';
# proxy_set_header Referer $http_referer;
proxy_set_header Referer http://<ip>:<port>$request_uri;
proxy_redirect off;
proxy_pass http://<ip>:<port>/;
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
编辑 (opens new window)
上次更新: 2024/04/19, 08:52:45
- 01
- idea 热部署插件 JRebel 安装及破解,不生效问题解决04-10
- 02
- spark中代码的执行位置(Driver or Executer)12-12
- 03
- 大数据技术之 SparkStreaming12-12