我有一个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 /
内,一切正常。但如果不是,那就像忽略服务器块中的相同根指令一样。我在这里缺少什么?
答案 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
属性视而不见,因为此类关键字必须首先显示为由大括号或分号分隔。