Nginx 反向代理问题记录
今天尝试用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 "";
}
}
参考链接
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。