问题:Nginx - try_files:如何设置远程文件(url)?

我有一个使用浏览器历史记录的 React 单页应用程序,Basename 是“邀请”,这是我当前使用本机 html 文件的 nginx 配置:

server{
    listen 9999;
    server_name 0.0.0.0;
    access_log  /var/log/nginx/activity_access.log;
    error_log /var/log/nginx/activity_error.log;
    location /invite {
        root html;
        index index.html;
        try_files $uri /invite/index.html;
    }
}

上面的配置效果很好。

但我想将我的本地 html 文件设置为 cdn 上的 html 文件。我应该怎么办?这是我的伪代码:

server{
    listen 9999;
    server_name 0.0.0.0;
    access_log  /var/log/nginx/activity_access.log;
    error_log /var/log/nginx/activity_error.log;
    location /invite {
        root html;
        index index.html;
        try_files $uri https://mycdn.com/invite/index.html;
    }
}

谢谢!

解答

try_files语句中的最后一个参数只能为_internal redirect_指定一个URI。请改用命名位置。

例如:

location /invite {
    ...
    try_files $uri @redirect;
}
location @redirect {
    return 301 https://mycdn.com/invite/index.html;
}

详见本文档。


要使用反向代理而不是重定向,请使用:

location @redirect {
    rewrite ^ /invite/index.html break;
    proxy_pass https://mycdn.com;
}
Logo

开发云社区提供前沿行业资讯和优质的学习知识,同时提供优质稳定、价格优惠的云主机、数据库、网络、云储存等云服务产品

更多推荐