详解Nginx配置SSL证书实现Https访问

 更新时间:2017年07月03日 14:30:42   作者:富士里  
这篇文章主要介绍了详解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在同一个目录),这里特别需要注意:

  1. 如果是在linux系统下配置,这就算准备好了;
  2. 如果是在windows系统下,需要将.key秘钥文件中的密码去除,否则就会导致配置之后Nginx启动不起来,这里是一个坑,本人就卡在了这里,具体处理方法也很简单,在网上下载openssl的windows版本,然后将cmd切换到bin目录下,执行openssl rsa -in server.key -out server2.key,生成的server2.key就是配置需要的秘钥文件,但是需要将文件名改成server.key。

修改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 $scheme;
      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启动、配置及测试图文详解(全网最全)

    nginx启动、配置及测试图文详解(全网最全)

    nginx是一个轻量级的网页服务器、方向代理服务器和电子邮件代理服务器,具有配置灵活、静态资源高并发、系统资源占用少、拥有缓存服务等优点,这篇文章主要给大家介绍了关于nginx启动、配置及测试的相关资料,需要的朋友可以参考下
    2024-02-02
  • 分析nginx日志并屏蔽采集者ip(nginx屏蔽ip配置实例)

    分析nginx日志并屏蔽采集者ip(nginx屏蔽ip配置实例)

    这篇文章主要介绍了分析nginx日志并屏蔽采集者ip(nginx屏蔽ip配置实例),本文先是讲解了分析需要屏蔽日志的方法,然后讲解了Nginx中屏蔽IP的配置方法,需要的朋友可以参考下
    2015-02-02
  • nginx修改默认端口方法图文详解

    nginx修改默认端口方法图文详解

    我们都知道nginx 默认使用80端口,有时候我们希望nginx运行在其他端口,下面这篇文章主要给大家介绍了关于nginx修改默认端口的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • nginx常用配置conf的示例代码详解

    nginx常用配置conf的示例代码详解

    这篇文章主要介绍了nginx常用配置conf,包括配置vue项目,配置接口代理的代码详解,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 利用Nginx反向代理与负载均衡搭建多人测试环境详解

    利用Nginx反向代理与负载均衡搭建多人测试环境详解

    这篇文章主要介绍了利用Nginx反向代理与负载均衡搭建多人测试环境的相关资料,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-04-04
  • Nginx 负载均衡实现上游服务健康检查功能

    Nginx 负载均衡实现上游服务健康检查功能

    这篇文章主要介绍了Nginx 负载均衡实现上游服务健康检查,演示如何通过 nginx_upstream_check_module 实现负载均衡上游服务器的故障转移,需要的朋友可以参考下
    2024-06-06
  • Nginx实现404页面的方法小结

    Nginx实现404页面的方法小结

    这篇文章主要介绍了Nginx实现404页面的方法小结,需要的朋友可以参考下
    2017-08-08
  • nginx重写rewrite基础及实例分享

    nginx重写rewrite基础及实例分享

    这篇文章主要介绍了nginx重写rewrite基础及实例分享,需要的朋友可以参考下
    2016-04-04
  • Nginx中location proxy_pass加与不加/的区别说明

    Nginx中location proxy_pass加与不加/的区别说明

    本文总结了Nginx配置中的location匹配规则和proxy_pass用法,包括前缀匹配、精确匹配、正则表达式匹配、通配符匹配以及proxy_pass的配置细节
    2024-12-12
  • nginx使用nginx-rtmp-module模块实现直播间功能

    nginx使用nginx-rtmp-module模块实现直播间功能

    做的过程出现很多问题,环境其实就需要nginx就可以,然后就是在播放的问题,m3u8的格式,mac直接访问就支持,苹果系统原生H5支持m3u8,还有就是手机直接访问也支持!但是其他其他系统PC端不支持,尝试了好多都不行,最后终于找到了一个支持m3u8格式H5播放
    2017-10-10

最新评论