![Nginx 服务器块不起作用](https://linux22.com/image/645031/Nginx%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%9D%97%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
免责声明:只是为了澄清,我对 Linux 完全陌生,但我已经通过谷歌搜索和个人研究配置了一切。
我有一个带有 LEMP 堆栈的 Debian Wheezy 服务器,我打算将其用作域的主机。
我让 DNS 正常工作,这样当我输入域名时,我就会得到“欢迎使用 nginx”页面。问题出现是因为我已经创建了将托管网站的目录,并用网站的文件填充了它(index.php 是主页),我还配置了服务器块(/etc/nginx/sites-available/example.com),如下所示:
UPDATED Server block
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/example.com;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
带有指向 sites-enabled 目录的符号链接。但即使重新启动服务和/或重新启动计算机,域仍会显示“欢迎使用 nginx”消息。我尝试编辑网站中类似问题的答案的其他行,到目前为止没有任何变化,错误日志也没有显示任何内容。配置中的错误可能是由什么原因造成的?
提前感谢你的回答
更新:这是 nginx.conf 文件。在尝试注释和取消注释 sites-available 中的某些行并尝试将文件复制到“sites-enabled”目录时,域名现在完全拒绝加载,并给出“未收到数据”错误
UPDATED nginx.conf
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;
events {
worker_connections 768;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_names_hash_bucket_size 64;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
更新2:重新检查配置后,我注意到权限设置不正确,即使站点不在启用站点的目录中,默认权限也会以某种方式覆盖站点。我备份并删除了默认权限,并且为了保险起见,更改了服务器块中的工作目录,将站点文件移动到我捕获的目录中。它起作用了,现在站点可以加载了。现在我不知道是否应该将其添加到更新中或将其放在另一个问题中,但这里是:现在的问题是站点加载了 html 和 CSS,但出于某种原因没有加载 PHP,对此有什么想法吗?我会根据我发现的情况进行更新,或者如果你们需要更多信息,谢谢!
最后更新:花了一点时间,但我终于知道了 php 错误出在哪里,我开始查阅日志,发现我需要安装 php5-curl,之后问题就解决了,现在网站完全可以正常运行。
答案1
您使用的是 php CGI 还是 FPM?您只需要一个 fastcgi_pass 指令,但两个指令都未注释。
尝试创建索引文件 index.html,并将该文件放在服务器根目录中。重新加载 nginx 并查看它是否提供服务。添加 PHP 会使事情变得复杂,因此请确保 nginx 本身可以正常工作。service nginx configtest
也非常有帮助。
更新:听起来你在端口 9000 上使用 PHP-FPM。我会将 unix 套接字行注释掉,并确保服务器可以与其自己的端口 9000(TCP)通信。就 nginx 而言,听起来它是可以工作,但 PHP 可能不行。默认情况下,它将拥有自己的 FPM 守护进程日志文件和 PHP 脚本日志文件(可能在/var/log/
某处)。深入研究 /etc/php5/fpm 并开始查看 .ini 文件。
答案2
鉴于部分:
带有指向 sites-enabled 目录的符号链接
我认为你错在这里。
你sites-enabled
应该有符号链接向 sites-available
配置而不是相反,因为那是 nginx 默认查找的地方(参见 nginx.conf)。
分享你的 nginx.conf 可能会有帮助。