您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

Nginx反向代理Https域名时,请求报错502问题排查

时间:2023-07-10 16:31:19  来源:运维开发故事  作者:
当你的Nginx服务器作为反向代理,将client的请求转发到一个SSL服务器时,需要在HTTP请求头中包含SSL服务器的名称,这样SSL服务器才能正确地响应该请求。proxy_ssl_name指令就是设置proxy_pass指令所代理的SSL服务器的名称,即www.example.com。这样,在转发请求时,nginx就会在请求头中添加"Host: www.example.com"的参数,保证请

一、现象

在使用nginx反向代理后端服务器的时候,因为配置的是域名,导致HTTPS 请求转发失败,报 SSL 错误,js 报 502

二、排查过程

1、查看nginx日志,发现报502,但是本地curl upstream中的后端域名是可以正常通的。

2、查看后端服务器上,没有收到请求,说明请求没过去,继续排查nginx本身的配置问题,Nginx 渲染模版已支持 HTTPS,尝试略过 upstream 配置,直接在 conf 文件中渲染 https://域名,请求仍然失败。

3、然后换个思路,修改成内网ip不走域名,发现是正常,那换个域名试试。

然后怀疑客户的域名有问题?但是这域名是可以访问的,上面第一步已经测试过了。

4、这个时候只能翻一下错误日志,看看有什么有用的提示。

可以看到nginx错误日志里面有一串看不懂的报错提示和我们访问情况,nginx把域名解析成了一个ip地址,当我试着直接通过ip去访问时,果然报错了。

只能通过域名去访问,让我想起来了nginx同端口不同域名及禁用未绑定域名访问的配置,确实可以实现,这是https的SNI问题,大家可以自行查阅资料。

https://www.realks.com/2021/03/07/nginx-proxy-ssl-server-name/ https://freexyz.cn/server/98212.html

三、解决方案

为解决这个问题,nginx官方给出了一个参数配置。

然后我不使用 upstream了,而直接在 conf 文件中使用 https://域名 并且加上配置 proxy_ssl_server name_on。

但是我如果还是想用upstream来负载均衡,有没有办法呢?一顿操作,发现可以像下面这样配置,也是可以正常访问的。

location ^~ /modules/abm/ {
        proxy_ssl_server_name on;
        proxy_ssl_name 域名;
        proxy_set_header Host 域名;
        proxy_pass https://abtest_management_api_backend/modules/abm/;
        proxy_read_timeout 1800s;
        proxy_set_header Origanization-Id qiancheng;
        proxy_set_header X-Real-IP $clientRealIp;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass_header    X-Accel-Buffering;
    }

upstream abtest_management_api_backend {
        server 域名:443;

    }

问题解决,搞定!!

四、原因分析

仔细查看nginx error日志日志如下:

2023/07/07 00:03:56 [error] 29533#29533: *115403747 SSL_do_handshake() fAIled (SSL: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:SSL alert number 40) while SSL handshaking to upstream, client: 192.168.73.157, server: localhost, request: "HEAD /modules/abm/_sendata_ab_testing/nm_rc-virtual-list-_c6c90.73efda43.js HTTP/1.1", upstream: "https://114.80.1xxx1:443/modules/abm/_sendata_ab_testing/nm_rc-virtual-list-_c6c90.73efda43.js", host: "sc.xxx.com"

报错分析:在本地环境直接请求域名正常;但使用了nginx反向代理,在请求时DNS域名进行解析,真正请求出去的为IP与端口,但对方系统是多个域名对应一个公网ip,这个一个公网IP下映射到了多个项目和服务,通过nginx的server_name进行区分,故直接请求不通。

所以能成功请求方式有两种:

1、直接域名请求。

2、IP端口请求,但请求时需添加host。

即在nginx配置项中增加。

proxy_ssl_server_name on。

或者设置请求头。

proxy_ssl_server_name on。

proxy_ssl_name 域名。

proxy_set_header Host 域名。

(当你的nginx服务器作为反向代理,将client的请求转发到一个SSL服务器时,需要在HTTP请求头中包含SSL服务器的名称,这样SSL服务器才能正确地响应该请求。proxy_ssl_name指令就是设置proxy_pass指令所代理的SSL服务器的名称,即www.example.com。这样,在转发请求时,nginx就会在请求头中添加"Host: www.example.com"的参数,保证请求被正确地路由到目标SSL服务器。)

小知识:1.多个域名访问不同系统,使用同一个公网IP的情况;可以多个域名配置同一个公网IP和端口,映射到不同服务的nginx代理上,通过nginx配置server_name识别源域名,判定访问来源,进行请求处理。2.反向代理https请求,nginx编译安装时需要增加配置模块--with-http_ssl_module 3.使用阿里云的SLB作为负载均衡,证书可以配置在SLB上,但是要选择七层负载均衡。4.为啥添加host的时候只能写域名,不能通过变量获取。

proxy_set_header可以设置Host为、host与$http_host。

host的值设置为$proxy_host,是指nginx.conf的proxy_pass中设置的host值,也就是192.168.1.3,也就是服务器的IP地址。

不是一个固定的变量,他其实是http_HEADER通配后的结果。

http_content_type表示请求头里content-type属性的值,同理,$http_host指的就是请求头里的host属性。

$host是core模块内部的一个变量。

当请求头里不存在Host属性或者是个空值,$host则等于server_name

如果请求头里有Host属性,那么host就是www.example.com

变量

是否显示端口

值是否存在

host

"Host:value"显示值为a:b的时候,只显示a

http_host

"Host:value",value存在就显示

proxy_host

默认80不显示其他端口显示

"Host:value"显示

  • 参考文档 https://www.cnblogs.com/faberbeta/p/nginx012.html https://blog.dianduidian.com/post/nginx反向代理当后端为https时的一些细节和原理/。


Tags:Nginx   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除。
▌相关推荐
当你的Nginx服务器作为反向代理,将client的请求转发到一个SSL服务器时,需要在HTTP请求头中包含SSL服务器的名称,这样SSL服务器才能正确地响应该请求。proxy_ssl_name指令就是设...【详细内容】
2023-07-10  Tags: Nginx  点击:(0)  评论:(0)  加入收藏
Nginx是一款广泛使用的开源Web服务器和反向代理服务器,它具有高性能、高并发处理能力和灵活的配置选项。然而,就像其他软件一样,Nginx也可能遇到故障和常见问题。在本文中,我将...【详细内容】
2023-06-03  Tags: Nginx  点击:(60)  评论:(0)  加入收藏
Nginx是一个流行的开源Web服务器和反向代理服务器,具有高性能和可靠性。在使用Nginx时,遵循最佳实践和安全性考虑是非常重要的。下面是关于Nginx的最佳配置实践、安全性考虑和...【详细内容】
2023-06-03  Tags: Nginx  点击:(93)  评论:(0)  加入收藏
随着互联网技术的快速发展,Nginx 已成为最受欢迎的 Web 服务器之一,其稳定性、高性能和灵活性备受推崇。Nginx 日志文件是 Nginx 服务器中非常重要的组成部分,对于监控和诊断 W...【详细内容】
2023-06-01  Tags: Nginx  点击:(49)  评论:(0)  加入收藏
随着互联网技术的飞速发展,人们对Web性能的要求越来越高。而OpenResty(一款由Nginx和Lua组成的开源软件),则以其高性能、灵活性以及可扩展性,成为了许多企业级应用的首选。本文将...【详细内容】
2023-05-31  Tags: Nginx  点击:(62)  评论:(0)  加入收藏
1.前言在这个流量为王的时代,掌握了流量密码,就相当于掌握了一切皆有可能的机遇,但是,越是流量为王,越该保持敬畏之心。资源在获得流量的过程中扮演着极其重要的角色,如果我们的资...【详细内容】
2023-05-18  Tags: Nginx  点击:(104)  评论:(0)  加入收藏
1.前言我们的生产环境基本上都部署在云服务器上,例如应用服务器、MySQL服务器等。如果MySQL服务器直接暴露在公网,就会存在很大的风险,为了保证数据安全,MySQL服务器的端口是不...【详细内容】
2023-05-17  Tags: Nginx  点击:(95)  评论:(0)  加入收藏
Nginx是大家使用最多的高性能的HTTP和反向代理服务器了,为了防止网站被恶意攻击,我们可以对Nginx配置一些访问限制,比如限制每秒连接次数、每秒请求次数、下载速度等等。限制连...【详细内容】
2023-04-28  Tags: Nginx  点击:(74)  评论:(0)  加入收藏
Nginx可以用来实现gRPC的反向代理,这里简要介绍一下如何配置Nginx实现grpc反向代理。要实现grpc反向代理,需要进行以下步骤: 安装gRPC和protobuf在Nginx服务器上安装好gRPC和pr...【详细内容】
2023-04-21  Tags: Nginx  点击:(72)  评论:(0)  加入收藏
Nginx是一个高性能的Web服务器,代理服务器和反向代理服务器。它能够处理高并发的请求,并且拥有强大的扩展性和灵活性。在Nginx中,map是一个非常有用的指令,它可以让您定义一个映...【详细内容】
2023-04-21  Tags: Nginx  点击:(88)  评论:(0)  加入收藏
▌简易百科推荐
当你的Nginx服务器作为反向代理,将client的请求转发到一个SSL服务器时,需要在HTTP请求头中包含SSL服务器的名称,这样SSL服务器才能正确地响应该请求。proxy_ssl_name指令就是设...【详细内容】
2023-07-10    运维开发故事  Tags:Nginx   点击:(0)  评论:(0)  加入收藏
服务器可以消耗现代数据中心一半以上的能源,这使得服务器效率对寻求实现碳中和可持续发展目标的公司具有吸引力。另外,减少能源使用可以节省资金。为了帮助实现这一目标,根据Up...【详细内容】
2023-07-07     千家网  Tags:服务器   点击:(13)  评论:(0)  加入收藏
一、解决大图内存/计算问题的三个范式在两年前做的tutorial里面,我们有介绍过关于大规模神经网络,并且对20年以前的大规模图神经网络的进展有过一些介绍。在那个时候,考虑的是...【详细内容】
2023-07-04    DataFunTalk  Tags:神经网络   点击:(17)  评论:(0)  加入收藏
#01、基础知识中断本质是一种电信号,由硬件产生,并直接送到中断控制器,然后再由中断控制器向 CPU发送信号。常见的中断控制器有两种:可编程中断控制器(8259A)和高级可编程中断控制...【详细内容】
2023-07-04    匠心独运维妙维效  Tags:服务器   点击:(10)  评论:(0)  加入收藏
个人服务器对很多人来说非常熟悉,虽然它不像家里的PC电脑一样有非常高的性能,售价也比一般的电脑要便宜。但它确实也可以做到很多电脑不太适合的事情,比如用它来搭建一个网站、...【详细内容】
2023-07-04  etsme个人私有云    Tags:私有云   点击:(9)  评论:(0)  加入收藏
随着公有云服务器的日渐普及,安全问题也就日益突出,本文就来简单讲述一下,云服务器最基础的安全配置。在IT建设方面,安全是至关重要的,但是再高级的安全策略也是从最基础的、最简...【详细内容】
2023-07-01  IT狂人日志    Tags:云服务器   点击:(8)  评论:(0)  加入收藏
一、什么是服务器密码机? 服务器密码机是服务端密码运算类设备,提供密钥生成、数字签名、签名验证、数据加密、数据解密等通用密码服务功能。即在密钥作用下,实现明文和密文的...【详细内容】
2023-06-28  Cntrus数字认证    Tags:   点击:(17)  评论:(0)  加入收藏
一、安装IISIIS是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联...【详细内容】
2023-06-28  互联网打工人    Tags:FTP   点击:(17)  评论:(0)  加入收藏
今天准备在服务器上面收集些数据,但是发现不能直接从远程桌面复制文件到本地了,也不能从本地复制文件到服务器,因为经常要更新服务器上的一些设置,而信息都在本地,如果不能复制粘...【详细内容】
2023-06-27  芳芳分享汇    Tags:服务器   点击:(18)  评论:(0)  加入收藏
作者 | 百度智能小程序团队导读introduction本文首先介绍了分布式服务下日志服务建设的挑战,然后介绍了下业内ELK的通用解决方案及与天眼日志服务的差异性,接下来详细介绍了天...【详细内容】
2023-06-25  OSC开源社区    Tags:日志   点击:(22)  评论:(0)  加入收藏
站内最新
站内热门
站内头条