nginx:让 try_files 与主目录别名一起工作

nginx:让 try_files 与主目录别名一起工作

我有一个用户的家庭别名设置如下:

location ~ ^/~(.+?)(/.*)?$ {
  alias /home/$1/public_html$2;
  include fastcgi_params;
}

我在其中一个文件夹中有一个 PHP 应用程序,我想/~user/app/index.php在有人访问时重写/~user/app/whatever。我认为这一行应该可行:

try_files $uri $uri/ /home/$1/public_html$2/index.php;

但事实并非如此,nginx 配置是我处理过的最令人困惑的东西之一。我在这里遗漏了什么?

另外,我真的很怀念.htacess使用 nginx 的时光。我知道人们说它不安全或其他什么的,但将目录特定的配置保留在这个主文件之外确实很好。

答案1

您的问题不清楚。

您是否希望改写URI(位置)到另一个(/~user/app/whatever/~user/app/index.php)?或者您希望提供内容其中包含的/~user/app/whatever文件?/home/$1/public_html/app/whatever/index.php

nginx 的配置与 Apache 的配置不同,这是事实。说它“更加混乱”只是个人感觉。我要反对的是,与 Apache 相反,nginx 允许创建精简、干净且顺序无关的配置,从而保证可读性、可维护性和可扩展性。

迷失是正常的,因为你需要掌握的每项新技术都有一条学习曲线。我想 Apache 的配置并不总是那么简单,当你开始使用它时,如何处理它并不那么明显……

至于.htaccess,它将内容与配置混合在一起,用文件污染存储库,然后您需要保护这些文件以避免为它们提供服务......

nginx 通过使用指令允许您获得尽可能多的粒度和模块化include,该指令提供了将配置分离到多个文件中的良好功能,可以在上层配置中手动添加它们,甚至可以一次包含整个目录,允许每个服务器、每个配置文件。

如果您需要针对某个位置制定特定规则,只需为其创建块即可。如果您希望在单独的配置文件中将整个分支与位置树隔离开来,也可以。这是解决错误问题location的更简洁/更易读/更易于维护的方法。.htaccess

相关内容