Centos7+Apache2.4 反向代理配置,超简单!
环境:
系统:Centos7.4
HTTP Service:yum 安装的 Apache,版本为2.4
需求:碰到个需求,需要访问域名 a.com,但是要显示 b.com域名的内容(当然b.com可以是web服务器,也可以指定端口,这里泛指);思来想去,想到了几个方法!
方法一 :URL转发技术(可以实现,有缺点)
一张图说明URL转发原理:
优点:设置简单!无需代码设置!无需配置服务器!
缺点:
- 单独购买url转发服务
- 稳定性不好说,毕竟是别人家的东西
- iframe加载也是一大缺点,如果跨域操作DOM,会让你放弃的!
想到了正向代理与反向代理!正向代理需要设置客户端,如果有用户就不现实了,然后就研究反向代理了!
方法二 :反向代理(完美)
因为我用的http服务器是Apache的,所以一开始就百度啊google啊,哎!不说了,大家都有这种感受!反正感觉别人都是对的,但是自己的就是行不通!
所以有需要的人看到后希望先核对环境再去测试!
一张图了解反向代理:
这能满足我的愿望了吗?当然不能!
我的需求是 a.com访问显示 b.com,而且域名不能变,并不需要tomcat,那怎么办?改呗!
*看看修改后的流程:
关键点:直接将代理服务指向域名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>
这是我测试成功的:
网站内容都没有变,只有域名变了!目前算是达到要求了吧!缺点暂时还没有遇到!