前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache做反向代理服务器

Apache做反向代理服务器

作者头像
星哥玩云
发布2022-06-30 18:10:01
1.1K0
发布2022-06-30 18:10:01
举报
文章被收录于专栏:开源部署

Apache代理分为正向代理和反向代理

1 正向代理: 客户端无法直接访问外部的web,需要在客户端所在的网络内架设一台代理服务器,客户端通过代理服务器访问外部的web(需要在客户端的浏览器中设置代理服务器)

适用于: ①局域网的代理服务器(一般是网关,相当于squid的一般用法)

②访问某个受限网络的代理服务器,如教育网访问某些国外网站需要找代理

2 反向代理: 客户端能访问外部的web,但是不能访问目标web,目标web所在的网络内一台机器充当目标web的代理,客户端直接访问代理就像访问目标web一样(此代理对客户端透明,即客户端不用做如何设置,并不知道实际访问的只是代理而已,以为就是访问的目标)

适用于: ①idc的某台目标机器只对内开放web,外部的客户端要访问,就让另一台机器做proxy,外部直接访问proxy即相当于访问目标

②idc的目标机器的某个特殊的web服务跑在非正常端口如9000,而防火墙上只对外开放了80,此时可在80上做proxy映射到9000,外部访问80即相当于9000

简单示意图如下

本例中 机器192.168.0.114是我们的reverse proxy server apache/2.0.63运行在其80端口 上面有两个域名的虚拟主机 www.a.org www.b.org 要实现的效果是: 访问 www.a.org 即相当于访问另一台机器192.168.0.115 访问 www.b.org 即相当于访问本机的9000端口 apache的proxy功能由其proxy模块实现.加载模块有两种方式:静态和动态,现分别说明: 一 静态加载 静态加载,在编译apache时候编译进去,编译参数如下: "./configure" \ "-prefix=/usr/local/apache3" \ "--enable-so" \ "--enable-rewrite" \ "--with-mpm=prefork" \ "--enable-proxy" \ (这个参数即是代理模块启用) 安装完成后查看模块列表 /usr/local/apache3/bin/httpd -l 显示 Compiled in modules: core.c mod_access.c mod_auth.c mod_include.c mod_log_config.c mod_env.c mod_setenvif.c mod_proxy.c proxy_connect.c proxy_ftp.c proxy_http.c prefork.c http_core.c ....... 编辑配置文件 httpd.conf 在虚拟主机部分 NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com ServerName www.a.org ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://192.168.0.115/ ProxyPassReverse / http://192.168.0.115/ </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com ServerName www.b.org ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://127.0.0.1:9000/ ProxyPassReverse / http://127.0.0.1:9000/ </VirtualHost> 二 动态加载 动态加载:编译进一个已经装好了的apache中(编译为dso模块) 已经装好的apache在 /usr/local/apache2 进入apache源码的模块目录进行编译 cd httpd-2.0.63/modules/proxy/ /usr/local/apache2/bin/apxs -c -i -a mod_proxy.c proxy_connect.c proxy_http.c proxy_util.c 从输出里面看到apache的modules目录下已经产生了mod_proxy.so,且已经在httpd.conf中激活了 cd /usr/local/apache2/conf/ ls ../modules/ 看到确实有mod_prxoy.so 编辑配置文件 vi httpd.conf 修改如下 加载模块 LoadModule proxy_module modules/mod_proxy.so (这句是编译激活时产生的) LoadModule proxy_http_module modules/mod_proxy.so (这句是要手动添加的) 虚拟主机的部分加上 NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com ServerName www.a.org ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://192.168.0.115/ ProxyPassReverse / http://192.168.0.115/ </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com ServerName www.b.org ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://127.0.0.1:9000/ ProxyPassReverse / http://127.0.0.1:9000/ </VirtualHost> 重启apache生效 注: 如果不加LoadModule proxy_http_module modules/mod_proxy.so,则浏览器页面打不开,页面显示 Forbidden You don't have permission to access / on this server. 日志acess_log里面显示 192.168.0.28 - - [03/Jun/2009:16:16:27 +0800] "GET /?sessionId=4293567494722637330&rand=1244014624405&CONTEXT=0&page=com.othe r.AjaxWhoWhatUpdate&xrand=1244016991554&wwRandId=1244014624405&wwBugId=2341&wwType=View HTTP/1.1" 403 315 或者 192.168.0.28 - - [03/Jun/2009:17:10:32 +0800] "GET / HTTP/1.1" 403 315 即403错误 日志error_log里面显示 [Wed Jun 03 17:08:46 2009] [warn] proxy: No protocol handler was valid for the URL /. If you are using a DSO version of mod_p roxy, make sure the proxy submodules are included in the configuration using LoadModule.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档