大佬教程收集整理的这篇文章主要介绍了详解Nginx配置SSL证书实现Https访问,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
背景
由于项目需求,安全起见,需要将之前的http接口访问变成https访问,所以需要配置SSL证书。项目的架构是这样的:
基本架构是硬负载(ReaDWhere)+ 软负载(Nginx)+ tomcat集群,现在的问题是SSl证书要配置在哪里,直接配置在硬负载上?还是分别配置在Nginx和tomcat上?还是其他的配置方法呢?
首先在硬负载上配置放弃了,然后通过在网上查找资料,发现可以只在Nginx上配置证书,就是说Nginx接入使用https,而Nginx与tomcat之间使用http进行衔接,这样就游了一个整体思路。
关于SSL证书
关于SSL证书这里简单进行介绍,也是因为项目需要,进行了简单的了解。
SSL证书分为大致分为三种,域名级(DV)、企业级(OV)、增强级(EV),安全性以及价格依次增加。根据自己的需求进行选择,个人使用可以使用DV,便宜;企业用的话一般使用OV,特殊情况下使用EV。下面是几家云服务商的OV SSL证书的价格对比,Symantec和GeoTrust被选用的比较多,都属于赛门铁克旗下。
云服务商 | 证书品牌 | 价格 |
---|---|---|
阿里云 | Symantec | 4000/年 |
阿里云 | GeoTrust | 2062.4/年 |
腾讯云 | Symantec | 5000/年 |
腾讯云 | GeoTrust | 2850/年 |
西部数码 | Symantec | 3880/年 |
西部数码 | GeoTrust | 2137/年 |
SSL证书配置
由于Nginx对于SSL证书配置的支持才使得这种实现方式成为了可能,不得不感叹Nginx的强大。
证书准备
Nginx配置需要.pem/.crt证书 + .key秘钥,如果您现在拥有的是其他形式的证书,请按照相关说明转化成要求的证书类型,否则是不能完成证书的配置的。一般购买商家都会有相应的转换工具。
准备好了之后,将证书和秘钥放到Nginx的conf目录下(也就是跟配置文件Nginx.conf在同一个目录),这里特别需要注意:
修改Nginx配置文件
以下是我Nginx.conf配置文件的局部,端口着迷没有使用默认的443,而是改成了8185,根据您的需要进行修改即可,其他配置基本上按照下面就没问题。
server { Listen 8185; server_name localhost; ssl on; ssl_certificate server.pem; ssl_certificate_key server.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!RC4:!MD5:!aNulL:!eNulL:!NulL:!DH:!EDH:!EXP:+MEDIUM; ssl_prefer_server_ciphers on; LOCATIOn / { proxy_set_header Host $host:$server_port; 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 $scheR_350_11845@e; proxy_connect_timeout 5; proxy_send_timeout 5; proxy_read_timeout 5; proxy_pass http://qlddm_server; }
修改tomcat配置文件
虽然不需要在tomcat配置证书,但是仍然需要修改一下tomcat的配置Server.xml配置文件,具体包含两个地方:
<Connector executor="tomcatThreadPool" port="7083" protocol="org.apache.coyote.http11.http11Nio2Protocol" connectionTimeout="20000" maxConnections="8000" redirectPort="8185" proxyPort="8185" enableLookups="false" acceptCount="100" maxpostsize="10485760" compression="on" disableuploadTimeout="true" compressionMinSize="2048" acceptorThReadCount="2" compressableMimeType="text/HTML,text/xml,text/plain,text/CSS,text/JavaScript,application/JavaScript" URIEnCoding="utf-8" />
需要将redirectPort和proxyPort都修改为您的Nginx监听端口号。
<Valve classname="org.apache.catalina.valves.RemoteIpValve" remoteIpheader="X-ForWARDed-For" protocolheader="X-ForWARDed-Proto" protocolheaderhttpsValue="https" httpsServerPort="8185"/>
需要增加以上的Value标签,注意httpsServerPort也需要修改为Nginx监听端口号。
写在最后
至此,关于SSL的配置基本上就完成了,启动Nginx以及tomcat容器之后,不出意外应该就可以通过https正常访问了。另外想说的是,由于本人工作场景是一个硬负载均衡两台服务器,所以相同的配置需要在两台服务器上分别做一次。本文仅供参考,如对您有所帮助,实乃万幸,也希望大家多多支持编程小技巧。
以上是大佬教程为你收集整理的详解Nginx配置SSL证书实现Https访问全部内容,希望文章能够帮你解决详解Nginx配置SSL证书实现Https访问所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。