今天尝试用Nginx反代Hetrixtools的页面,发现很多问题。在此记录。

浏览器提示502 Gateway Timeout

在Nginx配置文件中增加error_log,使其输出错误日志,以便定位问题

server{
    server_name status.fly2x.cn;
    # 略
    access_log /home/wwwlogs/status.fly2x.cn.log combined;
    error_log /home/wwwlogs/status.fly2x.cn.error.log;

    location / {
        # 略 
    }
}

SSL_do_handshake() failed

详细报错如下:

2021/08/27 11:38:00 [error] 29535#0: *119035 SSL_do_handshake() failed (SSL: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error:SSL alert number 80) while SSL handshaking to upstream, client: 61.233.233.233, server: status.fly2x.cn, request: "GET /favicon.ico HTTP/2.0", upstream: "https://51.79.53.181:443/favicon.ico", host: "status.fly2x.cn", referrer: "https://status.fly2x.cn/"

查询资料后发现是对方服务器启用了SNI,需要增加几个配置。

server{
    server_name status.fly2x.cn;
    # 略
    access_log /home/wwwlogs/status.fly2x.cn.log combined;
    error_log /home/wwwlogs/status.fly2x.cn.error.log;

    location / {
        # 略 
        proxy_ssl_server_name on;
        proxy_ssl_name $host; # 如果请求域名与反代域名不一样,这里需要将$host改成请求域名'example.com'
    }
}

Sub_filter不生效

对方服务器启用了Gzip,导致Sub_filter无法找到对应字符串来替换。请求时,要求对方服务器不要开启Gzip即可。

server{
    server_name status.fly2x.cn;
    # 略

    location / {
        # 略 
        proxy_set_header Accept-Encoding "";
    }
}

参考链接

  1. NGINX caching proxy fails with SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
  2. Nginx reverse proxy to Heroku fails SSL handshake
  3. sub_filter由于开启gzip不生效 不能插入内容
文章目录