0

我有一个 nginx 配置,其根在服务器块中指定。根据这样的页面(https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/),这应该足够了,也不需要在位置/块中放置相同的根。但是除非我在 location / 块中放置一个根指令,否则我会收到 404 错误。这是我的服务器块:

server {
    listen          80;
    server_name     mysite.com

    root /usr/local/nginx/sites/mysite;
    index index.php index.html;

    location / {
        root /usr/local/nginx/sites/mysite;
        index  index.php index.html index.htm;
    }

    location ~ \.php$ {
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      fastcgi_pass unix:/var/run/php5-fpm.sock;
      fastcgi_index index.php;
      include fastcgi.conf;
    }

    error_page   500 502 503 504  /50x.html;
}

因此,如果 " root /usr/local/nginx/sites/mysite;" 在 inside location /,则一切正常。但如果不是,就像服务器块中的相同根指令被忽略。我在这里想念什么?

4

1 回答 1

2

您有语法错误。

server {
    listen          80;
    server_name     mysite.com; # <--- Missing semicolon

    root /usr/local/nginx/sites/mysite;
    index index.php index.html;

    location / {
        root /usr/local/nginx/sites/mysite;
        index  index.php index.html index.htm;
    }

    location ~ \.php$ {
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      fastcgi_pass unix:/var/run/php5-fpm.sock;
      fastcgi_index index.php;
      include fastcgi.conf;
    }

    error_page   500 502 503 504  /50x.html;
}

这将导致 nginx 对该root属性视而不见,因为此类关键字必须首先出现,并以花括号或分号分隔。

于 2016-04-29T16:06:14.283 回答