首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nginx一直在寻找index.html

Nginx一直在寻找index.html
EN

Stack Overflow用户
提问于 2017-05-13 06:20:13
回答 3查看 22K关注 0票数 4

http://localhost的nginx1.13显示的是404。当我查看容器日志时,我可以看到nginx并没有将请求传递给php,而是在寻找一个index.html。我不明白为什么它不会将请求传递给php

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

我已经确认这个文件是加载的。

代码语言:javascript
复制
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容器中的进程列表:

代码语言:javascript
复制
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

集装箱日志

代码语言:javascript
复制
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的所有引用

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-14 16:39:17

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

include /etc/nginx/conf.d/*.conf;指令在我的nginx.conf中丢失了。

票数 1
EN

Stack Overflow用户

发布于 2017-05-13 06:41:39

默认情况下,/etc/nginx/conf.d/文件夹中的所有配置文件(包括此处的文件/etc/nginx/conf.d/default.conf )都是从/etc/nginx/nginx.conf扩展的。

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

这方面的解决方案是覆盖默认的:

代码语言:javascript
复制
server {
    listen   80;
    root /var/www/html/public;
    charset utf-8;
    index index.php index.html index.htm;
}

然后重置您的nginx:sudo service nginx restart

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

票数 1
EN

Stack Overflow用户

发布于 2017-05-13 07:15:48

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

应该将显式index语句添加到server块中。

代码语言:javascript
复制
server {
    ...
    index index.php;
    location / {
        try_files $uri /index.php?$query_string;
    }

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

有关更多信息,请参见本文件

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43949915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档