背景
因为业务背景问题,目前应用后端的接口和前端服务是放置在不同的服务器上,而前端页面现在说需要加上https,但是我们的前端页面目前请求应用后端的接口的时候使用的还是http,所以导致了,请求http的接口时候出现了异常!
如图示:
image.png解决的办法就是,我们的也给需要给我们的应用接口加上对应的https支持!
之前已经给对应的接口的域名买好了对应的证书!
问题描述:
因为忘了,我们的应用接口的域名是指向了阿里云SLB上的服务器,所以一开始的时候是在后端进行配置相关的SSL,可是配置来配置还是无法生效!
请求的时候会说超时:
image.png image.png
首先后端的集群的应用服务器NGINX的配置是:
server {
listen 80; #监听80端口,可以改成其他端口
charset utf-8;
server_name xxxxx.xxxx.xxx; # 当前服务的域名,可以有多个,用空格隔开
location /favicon.ico {
log_not_found off;
access_log off;
}
#对aspx后缀的进行负载均衡请求设置
location / {
#请求转向自定义的的负载均衡服务器列表
proxy_pass http://xxxxx.x.x.x._api;
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;
proxy_connect_timeout 600; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 600; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 600; #连接成功后,后端服务器响应时间(代理接收超时)
}
access_log off;
}
server {
listen 443;
charset utf-8;
server_name xxxxx.xxxx.xxx;
keepalive_timeout 5;
ssl on;
ssl_certificate sslkey/xxxxx.xxxx.xxx.cn_bundle.crt;
ssl_certificate_key sslkey/xxxxx.xxxx.xxxcn.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
location /favicon.ico {
log_not_found off;
access_log off;
}
#对aspx后缀的进行负载均衡请求设置
location / {
#请求转向自定义的的负载均衡服务器列表
proxy_pass http://xxxxx.xxxx.xxx_api;
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;
proxy_connect_timeout 12; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 12; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 12; #连接成功后,后端服务器响应时间(代理接收超时)
}
access_log off;
}
后知后觉才记得,域名的指向的是负载服务器的IP,我们需要在负载层服务器那里进行配置。
于是乎打开了阿里云的负载均衡,查看一下对应的一些配置信息,
image.png所以尝试了添加对应的新的监听处理!
添加基本配置:
image.png
配置对应的监控检查:
image.png
然后再配置对应的转发策略:
image.png结果:
第I一次添加的时候,我开启了对应 <使用虚拟服务组>
导致下面的问题的提示(理论上其实应该是没影响的,暂且没继续尝试):
并且访问对应的后端接口返回的是502:
image.png因为对于http还是没有什么问题,所以排除了后端问题的可能性!
后来删除继续重新添加:
但是还是出现异常信息,
image.png
后来查阅各种资料,在阿里云的官方文档上有对应的排错步骤:
参考资料信息:
https://help.aliyun.com/knowledge_detail/55201.html?spm=a2c4g.11186623.6.714.K0jKZY
https://help.aliyun.com/knowledge_detail/55207.html?spm=a2c4g.11186623.6.721.FWDfvM
排查步骤
检查500/502/504错误截图,判断是负载均衡问题,高防/安全网络配置问题,还是后端ECS配置问题。
如果有高防/安全网络,请确认高防或者安全网络的七层转发配置正确。
请确认是所有客户端都有问题,还仅仅是部分客户端有问题。如果仅仅是部分客户端问题,排查是否该客户端被云盾阻挡,或者是否是负载均衡域名或者IP被ISP运营商拦截。
检查负载均衡状态,是否有后端ECS健康检查失败的情况,如果有健康检查失败,解决健康检查失败问题。
在客户端用hosts文件将负载均衡的服务地址绑定到后端服务器的IP地址上,确认是否是后端问题。如果5XX错误间断发生,很可能是后端某一台ECS服务器的配置问题。
尝试将七层负载均衡切换为四层负载均,查看问题是否会复现。
检查后端ECS服务器是否存在CPU、内存、磁盘或网络等性能瓶颈。
如果确认是后端服务器问题,请检查后端ECS Web服务器日志是否有相关错误,Web服务是否正常运行,确认Web访问逻辑是否有问题,卸载服务器上杀毒软件重启测试。
检查后端ECS Linux操作系统的TCP内核参数是否配置正确。
PS:
检查负载均衡状态,是否有后端ECS健康检查失败的情况,如果有健康检查失败,解决健康检查失败问题。
后来觉得应该有可能是原因是健康检查检查引起的问题异常:
,因为默认他应该是会在对应的server下的一个默认的路径去检查服务的情况,由于我没指定对应的检查URL地址,所有在转到80的时候就异常了!!
后来直接的关闭健康检查!就可以了!!
网友评论