Nginx反向代理:HTTPS到HTTP

做了一个Web项目,前后端分离,前端需要使用HTTPS访问。
部署的时候发现,前端HTTPS项目是不能发起HTTP的ajax到后端的,怎么办?
最直接的就是把后端也部署到支持HTTPS的Web服务器上,比如Tomcat,可以配置SSL。不过这样实在太麻烦,而且我们一般使用的是java内嵌的tomcat。

这时候可以考虑Nginx反向代理。

前端ajax不能使用HTTP访问,那就使用HTTPS呗,使用Nginx反向代理,把这个HTTPS代理到HTTP不就行了!

所以,解决方案是:

  1. 前端部署到Nginx上,配置HTTPS。比如通过 https://frontend.com 访问。前端 Ajax也使用HTTPS访问后端,比如 https://ajax.com
  2. 部署后端:java -jar, HTTP方式,比如通过 http://backend.com 访问
  3. Nginx设置反向代理:把 https://ajax.com 代理到 http://backend.com

这样前端HTTPS和后端HTTP就能通信了!