上次网站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;
然后就可以了