nginx配置默认错误页面

时间:2014-03-04 03:29:02

标签: nginx

首先,第一次使用nginx用户。所以,我还在学习与Apache和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之上,但在此之前它们没有工作。我做了那个动作,因为“内部”标志似乎没有像文档声明的那样使页面内部,因为我仍然可以直接访问它们。

你能给予的任何建议/帮助都会很棒!

1 个答案:

答案 0 :(得分:2)

错误问题与位置/具有/index.html的结束值有关。本质上,nginx首先尝试将uri作为文件,然后作为目录,然后再回到index.html。相反,我希望它返回404.所以我把它改成了下面,现在它可以工作。

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