技术解析

ngxin 做反向代理后访问目录会重定向到 proxy_pass 的 url
0
2021-05-27 21:49:46
idczone
比如访问 abcd.com/upload ,站点有默认首页的,会重定向到site001.cdn.abcd.com/upload,想知道是什么原因导致的,谢谢。
下面是配置文件:

server {
listen 80;
server_name abcd.com www.abcd.com;

location / {
subs_filter site001.cdn.abcd.com www.abcd.com;
proxy_pass http://site001.cdn.abcd.com;

proxy_connect_timeout 60s;
proxy_read_timeout 5400s;
proxy_se美国服务器nd_timeout 5400s;

proxy_redirect off;
if ($request_filename ~* .*\.(gif|jpg|jpeg|png|bmp|swf)$)
{
expires 30d;
}
if ($request_filename ~ .*\.(js|css|htm|html)?$)
{
expires 12h;
}
}

}
跟配置没关系,后端服务器跳的

但是访问site001.cdn.abcd.com/upload是可以的。如果是后端服务器的 原因,那有解决方法吗?

在location里加一项配置:
proxy_set_header HOST $http_host;
需要修改下请求的HOST 头。

谢谢你,修改后报错403,后端服务器并未绑定前端域名。

反向代理你先要设置一个upstream,而不是把后端地址直接放在proxy_pass 。

哦你这种写法也行,不过得修改下加上proxy_redirect ,而不是用subs_filter
修改配置文件如下
server {
listen 80;
server_name abcd.com www.abcd.com;
proxy_redirect http://site001.cdn.abcd.com/ /;
location / {
proxy_pass http://site001.cdn.abcd.com;
proxy_connect_timeout 60s;
proxy_read_timeout 5400s;
proxy_send_timeout 5400s;
proxy_redirect off;
if ($request_filename ~* .*\.(gif|jpg|jpeg|png|bmp|swf)$)
{
expires 30d;
}
if ($request_filename ~ .*\.(js|css|htm|html)?$)
{
expires 12h;
}
}
}

漏了 proxy_redirect off; 去掉

还以为沉了,天亮了试一下,谢谢您~~

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服