重定向当前服务器 nginx 上没有的所有路径

重定向当前服务器 nginx 上没有的所有路径

我们需要一些概念上简单的东西,但不确定 nginx 是否可以处理。

基本思想是检查服务器上是否存在该路径...如果存在,则让流量通过...如果不存在,则使用重写进行重定向。例如。

路径:example.com/page/12345<- 该路径存在于服务器上,因此只需传递即可。

路径:example.com/this/7121<- 服务器上不存在,因此传递给home.example.com/this/7121

使用 nginx 是否可行并且不会对性能产生重大影响。

答案1

听起来像try_files 指示是你正在寻找的:

按指定顺序检查文件是否存在,并使用找到的第一个文件进行请求处理;处理在当前上下文中执行。文件路径file根据rootalias指令从参数构建。可以通过在名称末尾指定斜杠来检查目录的存在,例如“ $uri/”。如果没有找到任何文件,则uri进行内部重定向到最后一个参数中指定的目录。

就你的情况而言,由于你希望将后备方案作为代理,因此我相信你需要为代理使用命名位置。例如

location @fallback {
    proxy_pass https://home.example.com$uri;
}

location / {
    try_files $uri $uri/ @fallback;
}

假设当请求的路径确实存在于本地时,您想要做的就是将该文件作为静态内容提供。

相关内容