Nginx - 如何将所有404请求代理到其他服务器

时间:2018-04-29 14:31:36

标签: php nginx fpm

我尝试将所有404请求代理到回退服务器,也用于主机服务器的php脚本返回的404s。

recursive_error_pages off;
error_page 404 = @missing;

location @missing {
    proxy_pass http://anotherserver;
    proxy_read_timeout 60s;
}

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ /index.php$is_args$args;
}

因此,每当php应用程序返回404时,它都会优雅地回归到其他人,但问题是它无法传递URI,因为它在命名块内。

仅当主机服务器的应用程序返回404时,如何配置nginx代理 anotherserver

1 个答案:

答案 0 :(得分:0)

您可以使用nginx upstream

在位置块中传递另一台服务器
recursive_error_pages off;
error_page 404 = @missing;

upstream anotherserver404 {
    server anotherserver.only404.com:80;
}

location @missing {
    proxy_pass http://anotherserver404;
    proxy_read_timeout 60s;
}

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ /index.php$is_args$args;
}