我觉得这很简单服务器阻挡可用站点。
问题:当我尝试访问我的域名,Nginx 返回“404 Not Found”,但如果我尝试访问某个文件,它就可以正常工作,例如mydomain.com/index.php
server {
listen 80;
index index.php;
server_name mydomain.com;
root /home/myusername/sites/mydomain.com/htdocs;
access_log /home/myusername/sites/mydomain.com/logs/access.log;
error_log /home/myusername/sites/mydomain.com/logs/error.log;
location / {
try_files $uri =404;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
注意:
- 我的主办方文件已配置;
- 每次编辑后我都会重新启动 Nginx;
- 访问权限、用户和组正确;
- 这错误日志文件为空,访问日志返回所有 404;
- 我尝试通过添加/删除一些行来更改配置,但仍然没有变化;
- 该网站已启用已启用站点带有正确的符号链接(我尝试编辑它并且打开了正确的文件);
- 我在同一台服务器上有几个运行良好的网站(因此包括可用站点和已启用站点是可以的,并且 Nginx 运行良好)。
答案1
您的try_files
指令限制性太强,而且我猜是放错了地方。
要么location /
完全删除,这没有多大意义,或者至少添加$uri/
这样的index
指令会起作用。
try_files $uri $uri/ =404;
但我的猜测是,您需要将其移入try_files
,location ~ \.php$
这将确保在将其传递给 PHP-FPM 进行处理之前 php 文件存在。所有其他文件将由 nginx 在正确使用index
指令的情况下提供服务。
server {
listen 80;
index index.php;
server_name mydomain.com;
root /home/myusername/sites/mydomain.com/htdocs;
access_log /home/myusername/sites/mydomain.com/logs/access.log;
error_log /home/myusername/sites/mydomain.com/logs/error.log;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}