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

最近公司要开发一个项目,移动端,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配置文件:

server {
    listen 443;
    server_name www.aaaaa.fun;  // 访问静态资源服务器
    ssl on;
    root /var/www/html;
    index index.html index.htm;
    ssl_certificate   cert/1529687155563.pem;
    ssl_certificate_key  cert/1529687155563.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
  	root  /var/www/html;  // 静态资源的具体地址
        index index.html index.htm;  
    }
}

server {
    listen 80;  
    server_name www.aaaaa.fun;
    rewrite ^/(.*) https://$server_name$request_uri? permanent;
}

再放一下proxy配置

server {
    listen 443;
    server_name proxy.aaaaa.fun;    // 代理后端的请求地址,所有前端接口请求地址都写这个地址
    ssl on;
    root /var/www/html;
    index index.html index.htm;
    ssl_certificate   cert/1531925421222.pem;
    ssl_certificate_key  cert/1531925421222.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
        proxy_pass http://120.33.111.111:7878;   //实际后台服务器地址,此地址就是http的,可以实现https转发http
    }
}

server {
    listen 80;
    server_name proxy.aaaaa.fun;
    rewrite ^/(.*) https://$server_name$request_uri? permanent;
}

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

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

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

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


重要的事儿说三遍!


  • 6
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值