Nginx sites-available 不起作用

Nginx sites-available 不起作用

我觉得这很简单服务器阻挡可用站点

问题:当我尝试访问我的域名,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_fileslocation ~ \.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;
    }    
}

相关内容