首先说一下, 并没有解决这个问题, 最后还是把http 接口变成 https.
之前接了个项目 , 前台用的vue, 后台是tomcat, Java, 前后端分离, tomcat 已经做好https配置.
接到项目后需要新增功能接口, 但我是用python的, java两年没用了, 重新配置环境比较麻烦, 所以还是用python开发新功能, 反正它是前后端分离嘛.
在本地调试是没问题的, vue 的config.js 可以配置跨域,
部署到生产环境时, 原先的页面和接口都是https环境, 而且vue打包发布后跨越配置就不再起作用, 只能重新配置接口的baseURL, 然后通过tomcat server.xml context 配置转发到vue打包文件路径和Java后台接口路径,
但是我的新功能接口, python接口是是http 的, https页面访问python接口, 浏览器会阻止, 因为https访问http接口就会禁止, 想在服务器用tomcat 去转发到我的python接口, tomcat又做不到 , 怎么办?
想了两个方法 :
1. 在申请一个二级域名, 申请ssl证书, 服务器再开个端口, 用nginx 做服务器, 来转发python接口
2. 全部用nginx转发, nginx监听80, 下载ssl证书配置https, 而tomcat 去掉443、https配置, 把监听80改回监听8080端口, context配置不变, nginx 负责转发到tomcat , 和python接口, tomcat 还可以继续转发到vue页面打包文件和java接口.
最后采用了第二种方法 , 解决了架构问题.
总结:
1. 碰到接别人做过的项目时, 前后端分离就体现出了优点, 因为可以用自己熟悉的语言去写接口.
2. nginx 七层转发, 还是牛逼啊.
3. nginx 配置http 转https:
server {
listen 80;
server_name pms.wenwenmao.com;
rewrite ^(.*)$ https://$host$1 permanent;
}