【发布时间】:2014-12-11 22:08:45
【问题描述】:
我决定在我的本地机器上尝试 Nginx,结果发现有一个地方很痛苦。
在使用 Nginx 之前,我使用的是 Apache,并且我的根文件夹配置为 /var/www/html。服务器名称为 localhost。这意味着转到localhost/project,它打开了/var/www/html/project 里面的内容,并且一切正常。
但是在 Nginx 上,我将根名称和服务器名称配置为完全相同(root = /var/www/html 和 server_name = localhost),我希望得到与 Apache 相同的结果。
问题是只有子目录的主页有效。例如,localhost/project 有效,但 localhost/project/foo 返回 404。
如果我将 root 配置为项目的 root (root = /var/www/html/project),那么我可以完美地访问localhost/project/foo,并且一切正常。
这里有什么问题?应该是这样还是我的配置有问题?
【问题讨论】:
-
目前尚不清楚您拥有哪些文件以及在哪里。您的索引配置正确吗?
foo是文件还是目录?如果是目录,当你添加尾部斜杠/时会发生什么? -
这是我的配置 -> gist.github.com/archonkulis/ac6351b647d1a286582a 请注意,注释的 try_files 行很少。我都试过了,都没有得到预期的结果。
-
@Brad 这是一个控制器动作。项目在 laravel 框架上。因此,它具有 MVC 结构,如果我正确理解了所有内容,则每个请求都会通过项目 index.php 文件。但是,如果我创建一个文件夹和一些 php 文件并尝试访问它,它确实有效。呃,现在我更困惑了,因为我认为这无关紧要。
-
@user3722573 啊,你应该在你的问题中添加这个细节。这是要知道的重要信息。 Laravel 有一个相当大的配置文件,你需要让它在 Nginx 中工作。我目前没有副本,但如果你四处寻找,你会找到它。
-
@Brad 是的,我没有提到这一点,因为我认为这并不重要,但我尝试在 laravel 公用文件夹中使用 php 文件创建文件夹。我可以很好地访问它。所以是的......老实说,我现在更加困惑