Nginx 代理可以用于这种用例吗?

Nginx 代理可以用于这种用例吗?

我一直无法理解代理的概念,想知道是否可以在我的用例中使用它。我有一个包含一个 php 文件 foo.php 的 Web 文件夹,我想知道如果有人访问不存在的文件(例如 bar.php),然后我是否可以在 nginx 配置中获取该位置并在该 URL 中显示但从 foo.php 中获取内容。我正在尝试在 nginx 中执行类似操作,但我不确定我的想法是否正确。

location bar.php {
proxy_pass http://localhost/foo.php;
}

答案1

由于两个位置都在同一个 Web 服务器上,因此您实际上不需要代理。您只需使用位置/别名即可。请参阅以下示例了解如何执行此操作:

至于代理,当你想为其他web 服务器(无论是物理上还是只是在同一主机上运行的另一个软件,例如 apache+nginx 配置)。

答案2

Nginx 当然可以实现这一点,但您正在寻找的可能是内部重写。

location bar.php {
    rewrite . foo.php;
}

Nginx 将检查其配置以了解如何运行 foo.php,如果成功,则在用户看来 bar.php 已运行。请参阅 NStorm 的答案以了解如何配置“location ~ .php$”。

相关内容