我们需要一些概念上简单的东西,但不确定 nginx 是否可以处理。
基本思想是检查服务器上是否存在该路径...如果存在,则让流量通过...如果不存在,则使用重写进行重定向。例如。
路径:example.com/page/12345
<- 该路径存在于服务器上,因此只需传递即可。
路径:example.com/this/7121
<- 服务器上不存在,因此传递给home.example.com/this/7121
使用 nginx 是否可行并且不会对性能产生重大影响。
答案1
听起来像try_files
指示是你正在寻找的:
按指定顺序检查文件是否存在,并使用找到的第一个文件进行请求处理;处理在当前上下文中执行。文件路径
file
根据root
和alias
指令从参数构建。可以通过在名称末尾指定斜杠来检查目录的存在,例如“$uri/
”。如果没有找到任何文件,则uri
进行内部重定向到最后一个参数中指定的目录。
就你的情况而言,由于你希望将后备方案作为代理,因此我相信你需要为代理使用命名位置。例如
location @fallback {
proxy_pass https://home.example.com$uri;
}
location / {
try_files $uri $uri/ @fallback;
}
假设当请求的路径确实存在于本地时,您想要做的就是将该文件作为静态内容提供。