当前位置:   article > 正文

使用nginx作为反向代理解决前后端分离时前端https,后端http造成访问无法被加载_nginx 代理前后端分离未访问到后端

nginx 代理前后端分离未访问到后端

最近公司要开发一个项目,移动端,web端,微信小程序.

起初我们使用全部是http协议,前后端分离,使用nginx作为静态资源服务器,这种部署方式很常见,网上都可以搜的到.

后来因为要让百度搜索录入词条,审核必须是https的网站,于是使用ssl证书申请了https,上一篇博客里面有介绍.至此静态资源都可以正常走https访问!

但是,如果和后端做交互,发送ajax请求或者要获取http资源的时候,就会造成https请求无法请求http后端的接口,网上搜了一下,很多人介绍说将后端的项目添加https支持,这样做是可以解决,但是有个问题,所有移动端的http请求都要改成https,这样会造成大量的工作.非常浪费人力.

后来选择nginx做反向代理,转发前端https请求到后端的http接口. 网上有一些介绍,但是不是很详尽,特此记录一下自己踩的坑:

1. 准备工作: 准备两个有SSL证书的域名,二级域名即可,(www.aaaaa.fun)(proxy.aaaaa.fun)

2. 第一个域名是用来访问静态服务器的,第二个域名是用来代理后台服务器的,这两个目前在浏览器中输入都是https前缀;

3. 上传一下对应的nginx配置文件内容:

default配置文件:

  1. server {
  2. listen 443;
  3. server_name www.aaaaa.fun; // 访问静态资源服务器
  4. ssl on;
  5. root /var/www/html;
  6. index index.html index.htm;
  7. ssl_certificate cert/1529687155563.pem;
  8. ssl_certificate_key cert/1529687155563.key;
  9. ssl_session_timeout 5m;
  10. ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  11. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  12. ssl_prefer_server_ciphers on;
  13. location / {
  14. root /var/www/html; // 静态资源的具体地址
  15. index index.html index.htm;
  16. }
  17. }
  18. server {
  19. listen 80;
  20. server_name www.aaaaa.fun;
  21. rewrite ^/(.*) https://$server_name$request_uri? permanent;
  22. }

再放一下proxy配置

  1. server {
  2. listen 443;
  3. server_name proxy.aaaaa.fun;    // 代理后端的请求地址,所有前端接口请求地址都写这个地址
  4. ssl on;
  5. root /var/www/html;
  6. index index.html index.htm;
  7. ssl_certificate cert/1531925421222.pem;
  8. ssl_certificate_key cert/1531925421222.key;
  9. ssl_session_timeout 5m;
  10. ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  11. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  12. ssl_prefer_server_ciphers on;
  13. location / {
  14. proxy_pass http://120.33.111.111:7878; //实际后台服务器地址,此地址就是http的,可以实现https转发http
  15. }
  16. }
  17. server {
  18. listen 80;
  19. server_name proxy.aaaaa.fun;
  20. rewrite ^/(.*) https://$server_name$request_uri? permanent;
  21. }

以上就是所有的配置思路,主要的是走两个域名,思路会清晰很多,送给那些新手.老手可以忽略

另外还有一点就是: 一定要注意前端请求地址一定是被代理过的地址,如上https://proxy.aaaaa.fun;

一定要注意前端请求地址一定是被代理过的地址,如上https://proxy.aaaaa.fun

一定要注意前端请求地址一定是被代理过的地址,如上https://proxy.aaaaa.fun


重要的事儿说三遍!


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/1015902
推荐阅读
相关标签
  

闽ICP备14008679号