给 Nginx 配置 errpage 错误显示页面
Nginx 默认的错误显示界面 有点枯燥 一般用户碰见错误页面会不知道怎么回事 然后就离开了 会导致流量流失
当然我们可以自定义 Nginx 的错误页面,动手能力强的同学可以自己写一个简单的错误页面(一般包括400,401,403,404,405,500,503等)
具体错误代码代表什么意思可以自行谷歌
当你做好自己的错误页面后 可以把你的错误页面放到 errpage 文件夹里 然后传到你网站的根目录下
然后修改你 Nginx 的网站配置文件 加入如下语句
error_page 400 = /errpage/400.html;
error_page 401 = /errpage/401.html;
error_page 403 = /errpage/403.html;
error_page 404 = /errpage/404.html;
error_page 405 = /errpage/405.html;
error_page 500 = /errpage/500.html;
error_page 503 = /errpage/503.html;
保存配置后重启 Nginx service nginx restart
然后我们会发现 普通的静态页面可以正常返回错误页面 可是 PHP 页面就不行
我谷歌了一下 原来是因为 fastcgi 没有把错误返回给 Nginx
这样就好办了
我们在 Nginx 的主配置文件 nginx.conf
里 加入一句
fastcgi_intercept_errors on;
设置保存后 重启 nginx service nginx restart
测试一下 一切正常~
另附本站 Nginx 配置文件 供大家参考
server {
listen 80;
listen 443 ssl http2;
ssl_certificate /xxx/fullchain.pem;#请上传到该目录下
ssl_certificate_key /xxx/privkey.pem;#请上传到该目录下
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_buffer_size 1400;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /xxx/dhparam.pem;
server_name www.noisky.cn noisky.cn blog.noisky.cn;
access_log /xxx/xxx_nginx.log combined;
index index.html index.htm index.php;
error_page 400 = /errpage/400.html; # errpage 错误配置文件
error_page 401 = /errpage/401.html;
error_page 403 = /errpage/403.html;
error_page 404 = /errpage/404.html;
error_page 405 = /errpage/405.html;
error_page 500 = /errpage/500.html;
error_page 503 = /errpage/503.html;
try_files $uri $uri/ /index.php?$args; #伪静态
root /xxx/www.noisky.cn;
if ($ssl_protocol = "") { return 301 https://$host$request_uri; }#301 强制跳转到 https 页面
if ($host != www.noisky.cn) {
rewrite ^/(.*)$ $scheme://www.noisky.cn/$1 permanent; #301 跳转到 www.noisky.cn
}
location ~ [^/]\.php(/|$) {
#fastcgi_pass remote_php_ip:9000;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
expires 30d;
access_log off;
}
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
}
发表评论