上次网站502错误,出来的是cloudflare自己的502页面,不仅不好看,而且报错全是英文,对国内不太友好。
利用nginx的自定义http错误的功能改一下。
然后从github找了一个批量生成错误界面的HttpErrorPages
nginx 如下设置
server {
listen 443 ssl http2;
ssl_certificate /path/to/key/ssl.pem;
ssl_certificate_key /path/to/key/ssl.key;
server_name dog.dogcraft.top;
proxy_intercept_errors on;
#index index.html;
location / {
proxy_pass http://127.0.0.1:8073/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
#try_files $uri $uri/ =404;
# add one directive for each http status code
error_page 400 /ErrorPages/HTTP400.html;
error_page 401 /ErrorPages/HTTP401.html;
error_page 402 /ErrorPages/HTTP402.html;
error_page 403 /ErrorPages/HTTP403.html;
error_page 404 /ErrorPages/HTTP404.html;
error_page 500 /ErrorPages/HTTP500.html;
error_page 501 /ErrorPages/HTTP501.html;
error_page 502 /ErrorPages/HTTP502.html;
error_page 503 /ErrorPages/HTTP503.html;
}
location /ErrorPages/ {
alias /var/www/ep/;
internal;
}
}
然后试了一下,直接访问是没有问题,但过cloudflare仍然是丑陋的cloudflare页面,看网上搜了一下,据说自定义功能是收费用户才能有的。
让nginx把错误502换成200,当成正常网页回来不就行了。
server {
listen 443 ssl http2;
ssl_certificate /path/to/key/ssl.pem;
ssl_certificate_key /path/to/key/ssl.key;
server_name dog.dogcraft.top;
proxy_intercept_errors on;
#index index.html;
location / {
proxy_pass http://127.0.0.1:8073/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
#try_files $uri $uri/ =404;
# add one directive for each http status code
error_page 400 /ErrorPages/HTTP400.html;
error_page 401 /ErrorPages/HTTP401.html;
error_page 402 /ErrorPages/HTTP402.html;
error_page 403 /ErrorPages/HTTP403.html;
error_page 404 /ErrorPages/HTTP404.html;
error_page 500 /ErrorPages/HTTP500.html;
error_page 501 /ErrorPages/HTTP501.html;
error_page 502 =200 /ErrorPages/HTTP502.html;
error_page 503 /ErrorPages/HTTP503.html;
}
location /ErrorPages/ {
alias /var/www/ep/;
internal;
}
}
改一行error_page 502 =200 /ErrorPages/HTTP502.html;
然后就可以了