背景:nginx主配置文件里面include了十几个子配置文件,现在需要配置404和500等错误页面
第一种是在项目里面通过路由配置,这里不做细说
第二种是nginx统一配置,这里说一下我配置nginx过程中遇到的问题
nginx配置错误页面
本来是计划在子配置文件的server里面加上配置项
fastcgi_intercept_errors on;# 开启支持错误自定义
error_page 404 /page/404.html;
location = /404.html {
root /usr/share/nginx/html;
}
error_page 500 502 503 504 /page/500.html;
localtion = /page/500.html {
root /usr/share/nginx/html;
}
类似上面这种加载server里面就可以了,但是我这里有十几个nginx子文件,还分多个环境,操作起来就很麻烦,所以就打算放在http区域,配置如下:
fastcgi_intercept_errors on;# 开启支持错误自定义
error_page 404 /404.html;
error_page 500 502 503 504 /500.html;
因为http区域不能配置localtion 所以只能将文件放在项目的根目录下,但是我十多个项目,每个项目都需要加html文件而且后期维护也很麻烦,所以我就计划做个映射。在/data下面建立了一个html文件夹,里面放着404.html 500html等,因为映射到十几个文件夹,如果一个个写也很麻烦,所以写了一个简单的shell命令执行
#!/bin/bash
for dir in `find /data/src/ -type d -name "*-client"`
do
ln -s /data/html/404.html $dir/
ln -s /data/html/500.html $dir/
done
我的前端项目文件都是以client结尾的,所以只需要查找出所有带client的文件夹,再遍历做映射就可以了。映射文件需要放在有公共访问权限的地方,类似/etc这种访问不到。