Centos7+Apache2.4 反向代理配置,超简单!

环境
系统:Centos7.4
HTTP Service:yum 安装的 Apache,版本为2.4
Centos7+Apache2.4 反向代理配置,超简单!
需求:碰到个需求,需要访问域名 a.com,但是要显示 b.com域名的内容(当然b.com可以是web服务器,也可以指定端口,这里泛指);思来想去,想到了几个方法!

方法一 :URL转发技术(可以实现,有缺点)

一张图说明URL转发原理:

Centos7+Apache2.4 反向代理配置,超简单!

优点:设置简单!无需代码设置!无需配置服务器!
缺点:

  1. 单独购买url转发服务
  2. 稳定性不好说,毕竟是别人家的东西
  3. iframe加载也是一大缺点,如果跨域操作DOM,会让你放弃的!

想到了正向代理与反向代理!正向代理需要设置客户端,如果有用户就不现实了,然后就研究反向代理了!

方法二 :反向代理(完美)

因为我用的http服务器是Apache的,所以一开始就百度啊google啊,哎!不说了,大家都有这种感受!反正感觉别人都是对的,但是自己的就是行不通!

所以有需要的人看到后希望先核对环境再去测试!

一张图了解反向代理:
Centos7+Apache2.4 反向代理配置,超简单!

这能满足我的愿望了吗?当然不能!
我的需求是 a.com访问显示 b.com,而且域名不能变,并不需要tomcat,那怎么办?改呗!
*看看修改后的流程:
Centos7+Apache2.4 反向代理配置,超简单!
关键点:直接将代理服务指向域名b.com就搞定了!

具体配置方法

网上说去httpd.conf注释一些.so文件;新建httpd-vhsts.conf,或者修改httpd-vhsts.conf什么都不适用,当然也可能是我方法用错了!那又怎样了?适合我的才是最好的对吧!

在httpd.conf末尾添加帮域名设置

#域名绑定设置
NameVirtualHost *80
<VirtualHost *:80>
 DocumentRoot /var/www/html
 ServerName www.a.com
ServerAlias www.a.com a.com www2.b.com 
  <Directory "/var/www/html">
   Options  FollowSymLinks
    AllowOverride all
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

NameVirtualHost :监听端口
VirtualHost :域名绑定端口
DocumentRoot :域名访问根目录
ServerName :绑定名称
ServerAlias :绑定的域名
Options FollowSymLinks:禁止访问目录

当然因为没有设置强制绑定,所以没有绑定域名访问的将是apache根目录,/var/www/html/

接着加上代理设置

<VirtualHost *:80>
    ServerAdmin a.com
    ServerName a.com
    ServerAlias a.com
    
    ProxyRequests off
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    //代理目的地址 注意空格和 /
    ProxyPass / http://b.com/
    ProxyPassReverse / http://b.com/
</VirtualHost>

这是我测试成功的:
Centos7+Apache2.4 反向代理配置,超简单!
网站内容都没有变,只有域名变了!目前算是达到要求了吧!缺点暂时还没有遇到!