ngxin 做反向代理后访问目录会重定向到 proxy_pass 的 url

2014-04-02 22:37:49 +08:00
 imydou
比如访问 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_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;
}
}

}
6089 次点击
所在节点    NGINX
8 条回复
likexian
2014-04-02 22:43:25 +08:00
跟配置没关系,后端服务器跳的
imydou
2014-04-02 22:46:16 +08:00
ijse
2014-04-02 22:50:36 +08:00
在location里加一项配置:

proxy_set_header HOST $http_host;

需要修改下请求的HOST 头。
imydou
2014-04-02 23:03:32 +08:00
@ijse 谢谢你,修改后报错403,后端服务器并未绑定前端域名。
sheaven
2014-04-03 21:31:42 +08:00
反向代理你先要设置一个upstream,而不是把后端地址直接放在proxy_pass 。
sheaven
2014-04-03 21:37:25 +08:00
哦你这种写法也行,不过得修改下加上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;
}
}

}
sheaven
2014-04-03 21:38:25 +08:00
漏了 proxy_redirect off; 去掉
imydou
2014-04-04 02:46:31 +08:00
@sheaven 还以为沉了,天亮了试一下,谢谢您~~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/107030

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX