更新——这让我发疯了(或者回到 Apache......)
问题肯定是符号链接和权限
当我设置指向同一树中的目录的符号链接时,例如 /var/www/html/html2 --> /var/www/html2,它工作正常。此外,/var/www/html/test_alias --> /var/www/html/test 工作正常。只是当指向不同的卷时,我得到了 403。我为所有这些目录分配了读取和执行权限以及 nginx 所有权,但没有任何效果。我还尝试添加
sendfile 关闭;autoindex 开启;disable_symlinks 关闭;
但无济于事!我肯定错过了一些基本的东西?
好吧,我是 Nginx 新手,但我已经成功建立了多个 Apache 网站,所以这应该不太难,对吧?
嗯,其实不是。至少对我来说不是。我花了几天时间设置一个可以解释 PHP 代码的服务器。一点也不花哨。
我终于有了一个可以正常工作的 nginx.conf 版本。它按顺序加载 php 和 html,默认为 index.php 和 index.html。
我的根目录是 /var/www/html,由用户 nginx 拥有。“html”中的文件可以正常加载,但是当我符号链接“html”下的目录时,它们无法加载。有人能提示我哪里出了问题吗?
这是我的会议:
events {
worker_connections 1024;
}
http {
index index.php index.html;
server {
listen 80 default_server;
server_name _; # This is just an invalid value which will never trigger on a real hostname.
server_name_in_redirect off;
root /var/www/html;
location ~ \.php$ {
root /var/www/html;
try_files $uri $uri/ =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
目录结构为:
/var/www/html
这些文件加载正常
/var/www/html/mysite
未找到/未加载这些文件
如果有人能为我提供这个问题的解决方案,那就太好了。如果你还知道一个带有简单配置示例的参考资料,我很乐意听听。上帝知道有很多不正确/过时/令人困惑的配置示例。
答案1
您是否已确保您的php-fpm
进程可以从创建符号链接的位置访问 PHP 文件?您应该能够在您的/var/www/html
目录中使用简单的 PHP 脚本对此进行测试,该脚本尝试打开来自其他卷的文件。
我个人会将root
目录更改为直接指向网站根目录的实际位置,而不为此使用符号链接。然后使用块alias
中的指令location
来更改位于不同位置的 URI 的文件系统位置。