反向代理简言之就是通过一台代理服务器,让Internet用户可以访问到内部网络上的服务器。

实验环境:一台带有两块网卡的OB服务器,一块连接外网1.1.1.1,一块连接内网192.168.100.1
1、开启apache的代理模块。修改httpd.conf文件,去掉下面的注释
  1. #LoadModule proxy_module    /usr/lib/apache/modules/libproxy.so
  2. LoadModule proxy_module    /usr/lib/apache/modules/libproxy.so
2、启用请求转发功能。找到<IfModule mod_proxy.c>模块,修改如下
  1. <IfModule mod_proxy.c>
  2. ProxyRequests Off
  3. <Directory proxy:*>
  4. Order deny,allow
  5. Allow from all
  6. </Directory>
  7. </IfModule>
3、配置反向代理。在httpd.conf文件中的Section 3: Virtual Hosts中进行virtualhost配置
  1. NameVirtualHost 1.1.1.1
  2. <VirtualHost 1.1.1.1>
  3. ServerName www.abc.com
  4. ProxyPass / http://192.168.100.2/
  5. ProxyPassReverse / http://192.168.100.2/
  6. SetEnv force-proxy-request-1.0 1
  7. SetEnv proxy-nokeepalive 1
  8. </VirtualHost>
还可以重定向到https协议的网址,前提是服务器上要先配置apache的ssl证书
  1. <VirtualHost 1.1.1.1>
  2. ServerName it.abc.com
  3. ProxyPass / https://192.168.100.3/
  4. ProxyPassReverse / https://192.168.100.3/
  5. SetEnv force-proxy-request-1.0 1
  6. SetEnv proxy-nokeepalive 1
  7. SSLEngine on
  8. SSLCertificateFile /etc/ssl/server.crt
  9. SSLCertificateKeyFile /etc/ssl/private/server.key
  10. </VirtualHost>
4、进行测试。对部署的内部服务进行访问时,要对DNS做相应的设置,即DNS可以正常解析到外网网卡上提供的域名
  1. www.abc.com 1.1.1.1
  2. it.abc.com 1.1.1.1
这时就可以通过域名对多台内部服务器进行映射访问了
apache做反向代理服务器
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.
转载:http://blog.csdn.net/benkaoya/article/details/8670726

Apache反向代理相关推荐

  1. Ubuntu下Apache反向代理设置

    Apache可通过mod_proxy*.so系列模块很好的实现正向.反向代理功能,亦可通过反向代理实现负载均衡,本文将讲述基于Apache反向代理实现负载均衡的配置方法. 1.环境配置说明: 代理服务 ...

  2. Apache 反向代理与修改网页内容

    apahce与nginx经常被用于作为Web服务器,其实apache与nginx有非常多的拓展功能,可以通过访问官方网站了解相关内容.之前使用过apache实现反向代理的功能,于是把它记录下来,方便以 ...

  3. Apache反向代理访问code-server登陆账户后页面空白该怎么办?

    问题复现 添加反向代理:直接在宝塔面板的网站设置中添加反向代理,如图所示 这样操做会产生 Websocket 报错1006,导致登陆进去显示一片空白页面. 主要原因apache的反向代理需要手动添加W ...

  4. 用apache反向代理解决单外网ip对应内网多个web主机的问题

    用apache反向代理解决单外网ip对应内网多个web主机的问题 转载一个有独立外网IP,需内网服务器对外发布的例子,是应用apache虚拟主机的. 来源地址:http://www.itshantou ...

  5. [转]用apache反向代理解决单外网ip对应内网多个web主机的问题

    用apache反向代理解决单外网ip对应内网多个web主机的问题 转载一个有独立外网IP,需内网服务器对外发布的例子,是应用apache虚拟主机的. 来源地址:http://www.itshantou ...

  6. Apache反向代理设置【转载】

    编译Apache时要进行的设置 ./configure --enable-mods-shared="all proxy" 1>修改 httpd.conf 文件中: LoadM ...

  7. 使用Apache反向代理实现全能主机的搭建

    闲谈: 很多站长在购买虚拟主机的时候,会看虚拟主机的一些参数,其中最重要的就是支持的程序语言.现在很多IDC商家都在宣称全能主机. 最好笑的一个事情就是,笔者刚建站的时候,购买了国内一家小主机商(名叫 ...

  8. OpenBSD配置Apache反向代理

    反向代理简言之就是通过一台代理服务器,让Internet用户可以访问到内部网络上的服务器. 实验环境:一台带有两块网卡的OB服务器,一块连接外网1.1.1.1,一块连接内网192.168.100.1 ...

  9. Apache 反向代理,Laravel获取用户真实IP

    文章目录 Apache (测试能够使用) 1. 激活加载remoteip模块 2. 定义代理与服务 3. 配置Apache日志格式以使用X-Forwarded-For 4. 结论 5. 参考链接 Ng ...

  10. apache 反向代理_通过 Apache 与 Nginx 配置 AJP 配置反向代理

    ↑ 点击上面 "时代Java"关注我们, 关注新技术,学习新知识! 前言 目前,随着公有云的出现,一些大型的服务提供商将很多的基础服务以公有云的形式发布出来,而企业则可以使用这些基 ...

最新文章

  1. 《软件测试经验与教训》之二——测试内容先后顺序
  2. 40年产权的商业地产,个人投资者决不能碰
  3. 在C++项目中引入Lua(AlphaGo使用的方案)
  4. Java算法之 选择排序
  5. IDE设置jdk和maven
  6. mysql主从配置原理_MySQL主从复制原理
  7. 实时视频传输中的BBR拥塞控制
  8. AWS Elemental推出新一代基于云的直播视频服务
  9. 微信小程序|开发实战篇之八-list列表组件及其子组件
  10. 模型☀️Catia模型到Unity的转化过程
  11. 对voc2007数据集进行person的单类数据抽取
  12. Detours学习之三:使用Detours
  13. HTML5超级链接、图片与多媒体
  14. 杭州电子科技大学计算机研究生很好考吗,杭州电子科技大学考研难吗?一般要什么水平才可以进入?...
  15. 新构造运动名词解释_第十三章 新构造运动
  16. Ae 入门系列之十:效果和动画预设
  17. 2022骨传导蓝牙耳机哪个最专业、目前最好的骨传导耳机
  18. matlab .m 返回值,MATLAB一个M文件的function返回值怎么在另一个M文件中的函数调用这个返回值?...
  19. send message
  20. Linux基础系列—Linux体系结构和Linux内核结构

热门文章

  1. Springboot 为了偷懒,我封装了一个自适配的数据单位转换工具类
  2. 被ssd硬盘坑了一天
  3. muduo木铎学习(一)
  4. 除了演示自动驾驶时失败的尴尬,法拉第未来能否如期交付才是重点
  5. RN开发实践——仿携程App(一)
  6. 华硕fx53vd 键盘_【华硕FX53VD7300评测】神似高贵的ROG 华硕飞行堡垒FX53V评测(全文)_华硕 FX53VD7300_笔记本评测-中关村在线...
  7. 微店API,item_get - 获得微店商品详情
  8. 根据填入日期自动算年龄
  9. 如何用计算机测量图片景深,OPPO AR测量功能上线!R17 Pro实现景深距离测量
  10. mes管理系统php原码,SPC工业制程管理(MES)源码