slb >nginx>tomcat。slb默认走七层协议,slb80端口转发nginx80端口,slb443端口转发nginx443端口,nginx80端口rewrite443端口。由于slb到nginx走的是http协议,而nginx开启http/2.0协议需要开启ssl,ssl走的是https协议,有冲突,新手求指教。不胜感激。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在您的架构中,SLB(负载均衡服务)作为前端接收客户端请求,并将这些请求转发到后端的Nginx服务器,而Nginx进一步代理到Tomcat服务器。您提到的问题在于想要在Nginx上启用HTTP/2协议,但遇到了SSL配置的困惑,因为HTTP/2通常与TLS(Transport Layer Security,即SSL的继承者)一起使用以提供安全连接。这里是一个解决方案步骤,帮助您解决这个问题:
配置SLB监听:
Nginx配置:
server {
listen 80;
server_name your_domain.com;
return 301 https://$host$request_uri;
}
配置443端口以启用SSL和HTTP/2。由于SLB已经处理了SSL,Nginx这边实际上不需要再进行SSL配置,而是直接开启HTTP/2支持。但是,出于完整性考虑,如果Nginx后面还有其他用途,可以这样配置:
server {
listen 443 ssl http2;
server_name your_domain.com;
# SSL证书和私钥路径
ssl_certificate /path/to/your/cert.pem;
ssl_certificate_key /path/to/your/privatekey.pem;
# 其他Nginx location配置...
}
测试与验证:
总结来说,关键是利用SLB处理外部的SSL连接,使得Nginx可以直接在内部网络中以未加密的形式接收请求,从而简化Nginx的配置,同时也能顺利启用HTTP/2以提升性能。