Php Nginx一直在寻找index.html

Php Nginx一直在寻找index.html,php,nginx,Php,Nginx,正在显示nginx 1.13的404。当我查看容器日志时,我可以看到nginx没有将请求传递给php fpm,而是寻找index.html我不明白为什么它不会将请求传递给php fpm /etc/nginx/conf.d/default.conf 我已确认此文件已加载 server { listen 80; root /var/www/html/public; index index.php; charset utf-8; # look for l

正在显示nginx 1.13的404。当我查看容器日志时,我可以看到nginx没有将请求传递给php fpm,而是寻找index.html我不明白为什么它不会将请求传递给php fpm

/etc/nginx/conf.d/default.conf

我已确认此文件已加载

server {
    listen   80;
    root /var/www/html/public;
    index index.php;

    charset utf-8;

    # look for local files on the container before sending the request to fpm
    location / {
        try_files $uri /index.php?$query_string;
    }

    # nothing local, let fpm handle it
    location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass            localhost:9000;
        fastcgi_index           index.php;
        include                 fastcgi_params;
        fastcgi_param           REQUEST_METHOD  $request_method;
        fastcgi_param           SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param           QUERY_STRING    $query_string;
        fastcgi_param           CONTENT_TYPE    $content_type;
        fastcgi_param           CONTENT_LENGTH  $content_length;
        # Httpoxy exploit (https://httpoxy.org/) fix
        fastcgi_param           HTTP_PROXY "";

        # allow larger POSTS for handling stripe payment tokens
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
   }
}
web容器中的进程列表:

PID   USER     TIME   COMMAND
    1 root       0:00 s6-svscan -t0 /var/run/s6/services
   33 root       0:00 s6-supervise s6-fdholderd
  170 root       0:00 s6-supervise php-fpm
  171 root       0:00 s6-supervise nginx
  173 root       0:00 php-fpm: master process (/usr/local/etc/php-fpm.conf)
  174 root       0:00 {run} /bin/sh ./run
  177 root       0:00 nginx: master process nginx -g daemon off;
  187 nginx      0:00 nginx: worker process
  192 www-data   0:00 php-fpm: pool www
  193 www-data   0:00 php-fpm: pool www
  194 root       0:00 ps -ef
容器日志

web_1    | 2017/05/13 06:13:10 [error] 187#187: *1 "/etc/nginx/html/index.html" is not found (2: No such file or directory), client: 172.19.0.1, server: localhost, request: "GET / HTTP/1.1", host: "mysite.local"
web_1    | 172.19.0.1 - - [13/May/2017:06:13:10 +0000] "GET / HTTP/1.1" 404 571 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"

更新删除了下面几条注释中对index.htm的所有引用

默认情况下,
/etc/nginx/conf.d/
文件夹中的所有配置文件,包括您在这里的文件
/etc/nginx/conf.d/default.conf
,都是从
/etc/nginx/nginx.conf
扩展而来的

在此配置中,您没有在
server{}
块中指定
index
指令。然后nginx将在
/etc/nginx/nginx.conf
中查找默认值

解决方案是覆盖默认值:

server {
    listen   80;
    root /var/www/html/public;
    charset utf-8;
    index index.php index.html index.htm;
}
然后重置nginx:
sudo服务nginx重启


然后,
index.php
将具有比其他nginx更高的查找优先级。

nginx
正在使用
index
指令的默认值来处理URI
/
(因为目录确实存在)

您应该向
服务器
块添加显式
索引
语句

server {
    ...
    index index.php;
    location / {
        try_files $uri /index.php?$query_string;
    }

    # nothing local, let fpm handle it
    location ~ [^/]\.php(/|$) {
        ...
    }
}

请参阅以了解更多信息。

问题在于,尽管我自己的vhosts配置位于
/etc/nginx/conf.d/default.conf
nginx-T
(显示nginx加载的配置)中,但没有显示文件已被读取


包括/etc/nginx/conf.d/*.confnginx.conf

中缺少code>指令,感谢您的反馈。在实现了这个更改并通过运行
docker compose exec web cat/etc/nginx/conf.d/default.conf验证了它在文件系统中之后,我仍然看到了这个问题。你能告诉我
/etc/nginx/conf.d/default.conf
文件的内容吗?最好在容器中登录并检查我提到的文件。因为更改后还需要刷新nginx,我已经更新了上面的配置。在对虚拟主机进行配置更改后,我重新启动了容器。vhost文件是通过挂载提供的,因此这足以更新它。如果是这样,您可以在原始文件挂载到该容器之前将其重新加载到该容器以生效。因为我们现在在nginx上面临问题,所以您需要以任何方式执行此操作。错误消息表明此
服务器
块未处理请求。通过验证,您的意思是
nginx-T
?删除默认服务器块或为该块指定一个
server\u name
。默认情况下,该块具有
server\u name”“
,即,除非指定了
默认服务器
,否则该块的
主机头不为空。