尽管root在服务器

时间:2016-04-29 15:35:22

标签: nginx nginx-location

我有一个nginx配置,其中包含在服务器块中指定的根目录。根据这样的页面(https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/),这应该足够了,而不需要在位置/块中放置相同的根。但除非我在位置/块中放置了根指令,否则会出现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;"在location /内,一切正常。但如果不是,那就像忽略服务器块中的相同根指令一样。我在这里缺少什么?

1 个答案:

答案 0 :(得分: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属性视而不见,因为此类关键字必须首先显示为由大括号或分号分隔。