ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

apache如何开启反向代理?这篇完整教你如何配置

2022-05-06 19:34:47  阅读:206  来源: 互联网

标签:test1 www test2 http 代理 这篇 如何 apache com


 

 什么是反向代理?

    服务器根据客户端的请求,从其关联的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器簇的存在。

    反向代理的特点:反向代理是供很多客户端都通过它间接访问不同后端服务器上的资源,而不需要知道这些后端服务器的存在,而以为所有资源都来自于这个反向代理服务器。


下面就跟大家分享下apache下各种反向代理的配置规则

    apache的反向代理是通过proxy模块来实现的,因此,在配置代理前,需要在apache服务器内把proxy的一些相关模块加载进来,否则代理配置是无效的。

这些模块的加载也很简单,找到apache的配置文件 httpd.conf (apache的安装目录/conf/httpd.conf),在httpd.conf中分别找到下面3行内容,把它们前面的‘#’去掉,然后保存。

1 2 3 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so Include conf/extra/httpd-vhosts.conf

接下来就可以配置反向代理了。

www.test1.com(代理规则配置站)   www.test2.com(被代理的站)

假设现在我们用 www.test1.com  来代理 www.test2.com 

反向代理规则配置:在 apache的安装目录/conf/vhosts.conf 中对应的站点内配置

【每次配置好代理规则后一定要重启服务器】

 

1、全站反向代理

配置全站反向代理后,在浏览器访问www.test1.com的任何链接 最后显示的都是www.test2.com 相关的内容,例如:访问 www.test1.com/news.html 实际显示的内容则是 www.test2.com/news.html 的内容

代理前www.test1.com 的配置

1 2 3 4 5 6 7 8 9 10 11 12 <VirtualHost *:80>     DocumentRoot "D:\PHP\WWW\test1"     ServerName www.a.com     ServerAlias    <Directory "D:\PHP\WWW\test1">       Options FollowSymLinks ExecCGI       AllowOverride All       Order allow,deny       Allow from all      Require all granted   </Directory> </VirtualHost>

代理后的配置

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <VirtualHost *:80>     DocumentRoot "D:\PHP\WWW\test1"     ServerName www.a.com     ServerAlias    <Directory "D:\PHP\WWW\test1">       Options FollowSymLinks ExecCGI       AllowOverride All       Order allow,deny       Allow from all      Require all granted   </Directory>   #反向代理配置   ProxyPassMatch ^/.*$ http://www.test2.com   ProxyPassReverse ^/.*$ http://www.test2.com </VirtualHost>

2、指定文件类型代理配置

假设现在只想 www.test1.com  下的以.shtml结尾的访问代理www.test2.com,配置如下(只有访问以'.shtml'结尾的 www.test1.com  链接才会显示 www.test2.com  站点的内容)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <VirtualHost *:80>     DocumentRoot "D:\PHP\WWW\test1"     ServerName www.a.com     ServerAlias    <Directory "D:\PHP\WWW\test1">       Options FollowSymLinks ExecCGI       AllowOverride All       Order allow,deny       Allow from all      Require all granted   </Directory>   #反向代理配置   ProxyPassMatch ^/.*\.shtml$ http://www.test2.com   ProxyPassReverse ^/.*\.shtml$ http://www.test2.com </VirtualHost>

3、二级目录代理配置

假设现在只想让 www.test1.com 的 news 目录代理 www.test2.com ,配置如下(只有在访问 http://www.test1.com/news/ 下的页面才会显示 www.test2.com 站点的内容 )

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <VirtualHost *:80>     DocumentRoot "D:\PHP\WWW\test1"     ServerName www.a.com     ServerAlias    <Directory "D:\PHP\WWW\test1">       Options FollowSymLinks ExecCGI       AllowOverride All       Order allow,deny       Allow from all      Require all granted   </Directory>   #反向代理配置   ProxyPass /hexun  http://www.test2.com ProxyPassReverse /hexun http://www.test2.com </VirtualHost>

4、指定某个具体的页面代理配置

    指定某个具体页面代理,也就是只有在访问这个指定的页面时才会显示代理内容,访问其他页面任然显示自己原本的内容。

    假设现在只想让 http://www.test1.com/contact.html 这个页面代理www.test2.com,配置如下(只有在访问 http://www.test1.com/contact.html 是才会显示 www.test2.com 站点的内容   )

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <VirtualHost *:80>     DocumentRoot "D:\PHP\WWW\test1"     ServerName www.a.com     ServerAlias    <Directory "D:\PHP\WWW\test1">       Options FollowSymLinks ExecCGI       AllowOverride All       Order allow,deny       Allow from all      Require all granted   </Directory>   #反向代理配置   ProxyRequests off   <Proxy *>     Order allow,deny     Allow from all   </Proxy>   <Location /contact.html>     ProxyPass http://www.test2.com     ProxyPassReverse http://www.test2.com   </Location> </VirtualHost>

 apache服务器反向代理的类型大致也就上面4中类型。

 

文章转自:http://www.kaotop.com/it/858509.html

标签:test1,www,test2,http,代理,这篇,如何,apache,com
来源: https://www.cnblogs.com/68xi/p/16230089.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有