首先,第一次使用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之上,但在此之前它们没有工作。我做了那个动作,因为“内部”标志似乎没有像文档声明的那样使页面内部,因为我仍然可以直接访问它们。
你能给予的任何建议/帮助都会很棒!
答案 0 :(得分:2)
错误问题与位置/具有/index.html的结束值有关。本质上,nginx首先尝试将uri作为文件,然后作为目录,然后再回到index.html。相反,我希望它返回404.所以我把它改成了下面,现在它可以工作。
location / {
try_files $uri $uri/ =404;
}