NGINX 在创建符号链接后给出 404 错误

Posted

技术标签:

【中文标题】NGINX 在创建符号链接后给出 404 错误【英文标题】:NGINX gaves 404 error after creating a symlink 【发布时间】:2019-08-28 19:57:39 【问题描述】:

我的网站在 php-larvel 和 nginx 上作为网络服务器运行,根目录是 /public,一切正常,但是当我想保护我的 phpmyadmin 登录 url 时,在 /public_html : 中通过此命令创建符号链接

ln -s /usr/share/phpmyadmin/phpmyadmin-YOUR-SECRET-CODE

网站宕机显示 404 ,nginx 显示此错误:

2019/04/07 07:09:02 [错误] 4163#4163: *110 目录索引 “/home/admin/web/example.com/public_html/”被禁止

nginx 配置已经设置为在 /public 上服务。我不知道为什么它试图访问 public_html 的请求。

【问题讨论】:

【参考方案1】:

运行 NGINX 的用户必须能够访问它试图读取和/或写入的目录。在大多数情况下,NGINX 以用户 nginx 或 www-data 的身份运行。

我们可以通过运行检查 /etc/nginx/nginx.conf 中的用户指令:

grep 用户 /etc/nginx/nginx.conf 如果该命令的返回吐出一个用户,那么我们可以使用 chown 更改您提到的目录的所有权。

chown -R user:group /insert/path/here 所以如果 NGINX 作为 www-data 运行:

chown -R www-data:www-data /insert/path/here 如果 grep 命令没有输出用户,我们总能看到谁拥有 NGINX 的目录,我们应该能够使用该用户。

简单运行:

ls -al /etc/nginx 并从输出中获取用户。

附带说明一下,如果您碰巧使用 NGINX 运行 PHP-FPM,情况会有所不同。在这种情况下,目录和文件应该归运行 PHP-FPM 进程的用户所有。

如果您正在运行 PHP-FPM,您可以 cd 进入主目录并检查池文件。如果您没有为您的设置修改任何内容,PHP-FPM 的默认用户始终是 www-data,因此应该是拥有所有文件和目录的用户。

cd /etc/php/*/fpm/pool.d/ 然后:

纳米 www.conf

【讨论】:

以上是关于NGINX 在创建符号链接后给出 404 错误的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ 在创建 Scala 项目后在 build.sbt 中给出“无法解析符号”的错误

在Ubuntu中创建目录的符号链接[关闭]

创建符号链接时权限被拒绝

在Ubuntu中创建目录的符号链接[关闭]

无法在 ubuntu 中创建符号链接

修改nginx配置文件访问后链接网页跳转nginx404错误页面