最近发现访问本站老是出现 ERR_SSL_PROTOCOL_ERROR ,需要刷新多次才行。

搞了一圈发现又是偷懒照成的悲剧:

nginx 站点配置文件中

resolver 8.8.8.8 1.1.1.1 valid=300s;

是照搬国外 VPS 上的,然而本站在国内,8.8.8.8 是不通的 >_ 刷新后用 1.1.1.1 才又可以了 _<

改成

resolver 119.29.29.29 1.2.4.8 valid=300s;

问题解决。

根本原因还是监听端口混乱了。

原 nginx.conf 里面的 steam 块内容:

stream {
     map $ssl_preread_server_name $backend_name {
         frp.761026.top frp;
         default 127.0.0.1:443;
    }

   upstream frp {
        server 127.0.0.1:444;
    }

    server {
        listen 443 reuseport;
        proxy_pass $backend_name;
        ssl_preread on;
        proxy_protocol on;
    }
}

原本站 server 块片段:

......
server {
    listen 443 ssl reuseport proxy_protocol;
    http2 on;
    server_name 761026.top;
.......    

server 都监听在 0.0.0.0:443 上,由于使用了 reuseport 参数,启动并不会出现重复绑定错误,nginx -t 也不报错,实际就会出问题,改为

......
server {
    listen 127.0.0.1:443 ssl reuseport proxy_protocol;
    http2 on;
    server_name 761026.top;
.......    

就好了。