我一直无法理解代理的概念,想知道是否可以在我的用例中使用它。我有一个包含一个 php 文件 foo.php 的 Web 文件夹,我想知道如果有人访问不存在的文件(例如 bar.php),然后我是否可以在 nginx 配置中获取该位置并在该 URL 中显示但从 foo.php 中获取内容。我正在尝试在 nginx 中执行类似操作,但我不确定我的想法是否正确。
location bar.php {
proxy_pass http://localhost/foo.php;
}
答案1
由于两个位置都在同一个 Web 服务器上,因此您实际上不需要代理。您只需使用位置/别名即可。请参阅以下示例了解如何执行此操作:
- https://stackoverflow.com/questions/21399789/nginx-how-to-create-an-alias-url-route
- https://stackoverflow.com/questions/28490391/how-to-properly-configure-alias-directive-in-nginx
- 通过 Nginx 别名提供 PHP 服务
至于代理,当你想为其他web 服务器(无论是物理上还是只是在同一主机上运行的另一个软件,例如 apache+nginx 配置)。
答案2
Nginx 当然可以实现这一点,但您正在寻找的可能是内部重写。
location bar.php {
rewrite . foo.php;
}
Nginx 将检查其配置以了解如何运行 foo.php,如果成功,则在用户看来 bar.php 已运行。请参阅 NStorm 的答案以了解如何配置“location ~ .php$”。