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 错误的主要内容,如果未能解决你的问题,请参考以下文章