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.

本文转自  亮公子  51CTO博客,原文链接:http://blog.51cto.com/iyull/1864384

相关文章
ly~
|
1月前
|
网络协议 应用服务中间件 Apache
如何在 DNS 记录中设置反向代理服务器?
要设置反向代理服务器,首先需安装配置软件(如 Nginx 或 Apache),并确保域名正确指向服务器 IP。接着,在 DNS 中设置 A 或 CNAME 记录,将域名指向反向代理服务器。然后编辑 Nginx 或 Apache 的配置文件,将请求转发至后端服务器。最后,通过浏览器访问域名测试配置是否成功,并使用工具检查请求流向和响应情况。
ly~
89 3
ly~
|
1月前
|
缓存 监控 安全
反向代理服务器的常见故障有哪些?
反向代理服务器常遇到的故障包括配置错误、网络问题、性能瓶颈及安全漏洞。配置相关故障如错误监听端口、域名配置不当及代理转发规则错误,可使用`netstat -tuln`检查端口状态,并验证域名及DNS解析。网络故障涉及连接中断和带宽不足,利用`ping`和`traceroute`检测连通性,用`iftop`监控带宽。性能问题如资源耗尽和缓存不一致需通过`top`监控资源使用,并检查缓存策略。安全故障包括DDoS攻击和配置漏洞,应使用流量分析工具检测异常并加强安全配置,确保SSL/TLS加密和访问控制策略正确无误。
ly~
91 3
ly~
|
1月前
|
域名解析 网络协议 Linux
如何测试 DNS 记录中的反向代理服务器是否生效?
本文介绍了三种测试反向代理服务器配置的方法。首先,通过命令行工具如 `ping`、`nslookup` 和 `dig` 检查域名解析是否指向正确的 IP 地址。其次,利用 Web 浏览器访问域名,验证页面加载正常且请求头信息无误。最后,借助网络抓包工具如 `Wireshark` 和 `tcpdump` 分析数据包,确保请求正确转发并返回预期响应。
ly~
87 2
|
3月前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
3月前
|
数据库连接 Apache Java
【独家揭秘】图书管理系统的奇幻之旅:一文看透Apache Wicket如何从想法萌芽到服务器上翩翩起舞?
【8月更文挑战第31天】本文通过实战案例,详细介绍从概念到部署的Apache Wicket应用开发全流程。以在线图书管理系统为例,涵盖应用概念定义、项目创建、架构设计、首页编写、数据库交互及应用部署等关键步骤。通过Maven或Gradle引入Wicket依赖,设计包结构,并使用JPA或Hibernate处理数据持久化。最终,将应用配置并部署到Tomcat或Jetty服务器,帮助你全面掌握Wicket开发技巧。
48 0
|
3月前
|
监控 Linux 测试技术
|
3月前
|
监控 安全 网络安全
如何保护 Apache 服务器的安全
【8月更文挑战第23天】
72 0
|
21天前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
505 13
Apache Flink 2.0-preview released
|
25天前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
59 3
|
2月前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。

推荐镜像

更多