前后端完全分离出现跨域、无法访问后台解决方案

    系统为分布式,主体上分为三层,前端、服务消费端、服务提供端,前端代码记录后端服务器访问地址,由于后端服务不提供外网服务,故用户直接访问出现无法访问情况,但是前端服务器与后端服务器直接是互联互通的,所以需要设置反向代理,主要步骤如下:

1、安装httpserver服务器,目前使用的是Apache httpd服务。

安装命令:yum -y install httpd

2、网络不通:由于用户访问的是前端部分,前端服务器具备外网访问权限,但是当前端访问后台接口服务时,这时候为浏览器直接访问后台消费者端。故网络无法正常互通。

解决方案1:设置Apache服务器反向代理:将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端。(经测试设置反向代理还可避免跨域问题)

方案来自:http://www.cnblogs.com/skyfeng/articles/6628903.html

改造步骤:

1首先确保Apache有这些模块,在Apache根目录下确认有这些模块,主要包含以下模块:

      mod_proxy.so

    mod_proxy_ajp.so

    mod_proxy_balancer.so

    mod_proxy_connect.so

    mod_proxy_http.so

 打开配置conf/httpd.conf文件,将这些模块的注释去除,如下图所示:

2)修改配置文件,打开文件  conf/httpd.conf ,增加以下内容:

ProxyRequests Off

#代理设置

ProxyPass "/innermanage_proxy/" "http://XXX:8080/"

ProxyPassReverse "/innermanage_proxy/" "http://XXX:8080/"

<proxy  http://XXX:XX>

  AllowOverride None

  Order Deny,Allow

  Allow from all

</proxy>

3)在工程中修改前端代码

将访问后台服务地址改为:"/innermanage_proxy/";

注意:此时的地址应与conf/httpd中保持一致。

在设置完成后,日志中若出现:

Permission denied: AH00957: HTTP: attempt to connect to XXX:8080 (XXX) failed错误提示,则使用以下命令修改:

/usr/sbin/setsebool httpd_can_network_connect 1

/usr/sbin/setsebool -P httpd_can_network_connect 1 (使其永久生效)

解决方案2:使用nginx反向代理服务器,使用代理服务器进行访问后端接口。该方法代码改动量小,但是需要增加出口IP,且安装nginx在无外网的环境下比较困难。

主要步骤:

  1. 安装nginx-1.14.2。
  2. 修改nginx配置文件,如图:

  1. 修改前端访问后台路径配置为:配置文件中server中监听的端口与Ip

两个方案都测试成功,方案1利用Apache服务器的反向代理,而方案2则使用专门的反向代理服务。由于出口IP数量限制,目前采用方案1

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhouhaitao_cherry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值