2014-03-04 95 views
2

首先,首次使用nginx的用户。所以,我仍然在学习Apache和nginx的差异。nginx配置默认错误页面

我有一个nginx的股票安装。 (apt-get install nginx-full)我修改了在'/ etc/nginx/sites-enabled/default'找到的默认配置。但是,错误页面不起作用。我的docroot是/ server/www,我的错误页面位于目录/ server/errors /中。以下是我的配置。

server { 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 

    root /server/www; 
    index index.html; 

    server_name website.com; 

    location/{ 
     try_files $uri $uri/ /index.html; 
    } 

    error_page 403 404 405 /40x.html; 
    location /40x.html { 
     root /server/errors; 
     internal; 
    } 

    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root /server/errors; 
     internal; 
    } 

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

    location ~ /\.ht { 
     deny all; 
    } 
} 

所有应该生成403页或404页的页面,只需加载index.html文件即可。我相信有些事情可能发生在500个错误,但是,这有点难以产生。

另外,如果它是相关的,我将错误页面移到docroot上面,但他们之前没有工作。我做了这个举动,因为“内部”标志似乎并没有像文档声明那样使页面成为内部页面,因为我仍然可以直接访问它们。

任何建议/你可以给的帮助将是伟大的!

+0

我必须问,你是否在你改变设置时重新加载nginx? –

+0

http://wiki.nginx.org/HttpCoreModule - 请阅读'订购'部分。 – Danack

+0

是的,我在每次更改配置后都重新启动了nginx。 –

回答

2

错误问题与位置/有/index.html的最终值有关。本质上,nginx首先尝试将uri作为文件,然后作为目录,然后恢复为index.html。相反,我希望它返回一个404.所以我改变它到下面,现在它的工作。

location/{ 
    try_files $uri $uri/ =404; 
}