配置https的原因

  • 在写这篇博客的时候我特意搜索了一下,“为什么使用https?”。找到了一篇讲的比较好的文章,大家可以看一看。全站 HTTPS 的时代已经来了,你准备好了吗?

  • 其实我使用https的理由很简单

    • 在我开发微信小程序的过程中,只能使用https协议,不支持http
    • 在我的GitHub的个人主页我使用了ajax跨域请求数据,我在本地测试没有任何问题,但是放到GitHub上之后发现需要GitHub强制要求必须使用https协议发起ajax请求。
    • 目前还没有遇到其它非要使用https的场景,但是以上两点决定我必须配置一个https啊

关于在那个服务器里配置https

  • 我的服务器上安装了 apache 和 tomcat 两种。我做了前后端分离,我的构想是动态的数据请求接口全部放在 tomcat 上,把所有的静态资源放在 apache 上。这样做的原因是我看到有一篇文章讲到 apache 的静态资源的加载速度是快于 tomcat 的。虽然没有自己亲自测试两者的加载速度,但是我觉得把动态资源和静态分开更好。
  • 我之前写过一篇文章如何给 tomcat 配置 https, 但是这样的话 apache 就没有被 https,这不算完全的 https,只有 tomcat 可以提供 https 连接。于是我就想可不可以把 tomcat 和 apache 连接起来。在经过一番baidu,bing,google之后果然让我找到了最简单的方式(tomcat 和 apache 之间有多种连接方式)使用代理转发就可以。

apache配置https

  • 配置之前需要 ssl 证书,我买的是腾讯的域名,可以申请免费的 ssl 证书,下载之后打开 Apache 的文件夹会得到三个文件 1_root_bundle.crt 证书文件,2_www.domain.com.crt 证书文,3_www.domain.com.key 私钥文件

  • 去 apache 的安装目录之下找到 conf 文件夹下的 httpd.conf ,开启这些配置项(去除前边的 # 号)

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    Include conf/extra/httpd-ssl.conf
    
  • 将你的 ssl 证书的三个文件放到 conf 下的 ssl 文件夹中

  • 去 conf 目录下的 extra 文件夹下修改文件 httpd-ssl.conf,开启这些配置项(去除前边的 # 号)并修改文件名为你的文件名

    #启用 SSL 功能
    SSLEngine on 
    #证书文件的路径
    SSLCertificateFile "${SRVROOT}/conf/ssl/2_www.domain.com.crt" 
    #私钥文件的路径
    SSLCertificateKeyFile "${SRVROOT}/conf/ssl/3_www.domain.com.key"
    #证书链文件的路径
    SSLCertificateChainFile "${SRVROOT}/conf/ssl/1_root_bundle.crt"
    
  • 重启 apache , 去 cmd 去 bin 下 执行 httpd -k restart,https 配置成功

以上这些是apache配置https最简单的配置,还有很多参数可自行Google

apache 代理转发 tomcat

  • 如果之前的代理转发模块开启的话,只需要去 httpd.conf 最后加

    #添加tomcat的代理规则
    ProxyPass /web http://localhost:8080
    ProxyPassReverse /web http://localhost:8080
    ProxyVia On
    
  • 再次重启tomcat,访问 https://www.domain.com/web/ 熟悉的tomcat,完美的https连接。【注意 web 后边加 /,不然页面会样式丢失】


参考链接:

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐