nginx子域代理传递不起作用

时间:2017-03-05 09:31:25

标签: nginx url-rewriting reverse-proxy

我有像这样的nginx配置

example.com配置

location /sample.php {
    #return 505; 
    proxy_pass http://sub1.example.com
}
location / {
    return 404;
}

sub1.example.com配置

location / {
    try_uri $uri @missing
}
location ~ \.php {
    ...
}

location @missing {
    rewrite ^ http://sub1.example.com/index.php
}

当我在sample.php中请求example.com/index.php重定向并返回404时,我预测必须返回sub1.example.com/index.php这是一个有效的网址

我的错误是什么? 注意:当我取消注释return 505该工作并在浏览器中返回505

1 个答案:

答案 0 :(得分:0)

由于您在sub1声明中指定了完整网址,因此rewrite的配置正在执行重定向。有关详细信息,请参阅this document

使用内部重写,例如:

rewrite ^ /index.php last;

或更简单地说:

location / {
    try_files $uri /index.php;
}

有关详情,请参阅this document