apache做代理服务器

apache做代理服务器

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

正向代理:

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

适用于:

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

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

反向代理:

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

适用于:

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

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

反向代理配置方法

机器192.168.254.100我们的reverse proxy server 并且apache/2.4.4运行在其80端口

上面有两个域名的虚拟主机

www.beyondjie.com

bbs.beyondjie.com

要实现的效果是:

访问 www.beyondjie.com 即相当于访问另一台机器192.168.254.10:8080

访问 bbs.beyondjie.com 即相当于访问另一台机器192.168.254.20:8000

apache的proxy功能由其proxy模块实现.加载模块有两种方式:静态和动态,现分别说明:

 静态加载

静态加载,在编译apache时候编译进去,编译参数如下:

"./configure" \

"-prefix=/usr/local/httpd"\

"--enable-so" \

"--enable-rewrite"\

"--with-mpm=prefork"\

"--enable-proxy" \ (这个参数即是代理模块启用)

安装完成后查看模块列表

/usr/local/httpd/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(httpd-2.4.4不需要此项。2.2.*需要)

<VirtualHost *:80>

ServerAdmin [email protected]

ServerName www.beyondjie.com

ProxyRequests Off

<Proxy *>

Order deny,allow

Allow from all

</Proxy>

ProxyPass / http://192.168.254.10:8080/

ProxyPassReverse / http://192.168.254.10:8080/

</VirtualHost>

<VirtualHost *:80>

ServerAdmin [email protected]

ServerName bbs.beyondjie.com

ProxyRequests Off

<Proxy *>

Order deny,allow

Allow from all

</Proxy>

ProxyPass / http://192.168.254.20:8000/

ProxyPassReverse / http://192.168.254.20:8000/

</VirtualHost>

动态加载

动态加载:编译进一个已经装好了的apache中,需要用到apxs工具

apxs是一个为ApacheHTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中。

因此,要使用这个扩展机制,你的平台必须支持DSO特性,而且Apachehttpd必须内建了mod_so模块。前提是你支持动态模块加载DSO,即编译时有--enable-so选项,可通过如下命令查看当前是否含有mod_so.c模块

[[email protected]_Server ~]# httpd -l | grep so

mod_so.c

发现存在mod_so.c模块,那么apache就可以动态把proxy编译进去。

编译proxy需要的模块有:mod_proxy_httpNaNod_proxy.c proxy_util.c

步骤:

[[email protected]_Server ~]# cd /usr/src/httpd-2.4.4/modules/proxy/
[[email protected]_Server proxy]# /usr/local/httpd/bin/apxs -ciamod_proxy.c proxy_util.c mod_proxy_http.c
 
[[email protected]_Server proxy]# egrep"mod_proxy.so|mod_proxy_http.so" /usr/local/httpd/conf/httpd.conf
LoadModule proxy_module      modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

提示:

-cia选项表示编译(compile)、安装(install)以及启动(active)--> a选项会自动添加如下模块在配置文件httpd.conf中

LoadModuleproxy_module modules/mod_proxy.so

LoadModuleproxy_http_modulemodules/mod_proxy_http.so

安装表示将.so文件放至Apache可以找到的位置,而启用则表示将模块加入httpd.conf文件

下面是虚拟主机添加的内容,和上面一样

NameVirtualHost *:80(httpd-2.4.4不需要此项。2.2.*需要)
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.beyondjie.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://192.168.254.10:8080/
ProxyPassReverse / http://192.168.254.10:8080/
</VirtualHost>
 
<VirtualHost *:80>
ServerAdmin [email protected] 
ServerName bbs.beyondjie.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://192.168.254.20:8000/
ProxyPassReverse / http://192.168.254.20:8000/
</VirtualHost>

注:

如果不加LoadModule proxy_http_modulemodules/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=ViewHTTP/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 wasvalid for the URL /. If you are using a DSO version of mod_p

roxy, make sure the proxy submodules are included in theconfiguration using LoadModule.

apache查看模块状态的方法:

httpd -M

[[email protected]_Server conf]# httpd -M

Loaded Modules:

core_module (static)

so_module (static)

http_module (static)

authn_file_module(shared)

authn_core_module(shared)

authz_host_module(shared)

authz_groupfile_module(shared)

authz_user_module(shared)

authz_core_module(shared)

access_compat_module(shared)

auth_basic_module(shared)

reqtimeout_module (shared)

filter_module (shared)

mime_module (shared)

log_config_module(shared)

env_module (shared)

headers_module (shared)

setenvif_module (shared)

version_module (shared)

proxy_module (shared)

proxy_http_module(shared)

mpm_event_module (shared)

unixd_module (shared)

status_module (shared)

autoindex_module (shared)

dir_module (shared)

alias_module (shared)

shared表示动态,static表示静态

客户端测试结果

正向代理配置方法

做正向代理只需要修改配置文件,添加

<IfModule mod_proxy.c>
ProxyRequests On
<Proxy 192.168.254.100:80>
   Order deny,allow
   Deny from all
   Allow from all
</Proxy>
</IfModule>

其中192.168.254.100:80 为代理服务器的ip地址和端口

即可

时间: 2024-10-08 07:30:36

apache做代理服务器的相关文章

Apache 做反向代理服务器

apache做反向代理服务器 apache代理分为正向代理和反向代理: 1 正向代理: 客户端无法直接访问外部的web,需要在客户端所在的网络内架设一台代理服务器,客户端通过代理服务器访问外部的web(需要在客户端的浏览器中设置代理服务器) 适用于: ①局域网的代理服务器(一般是网关,相当于squid的一般用法) ②访问某个受限网络的代理服务器,如教育网访问某些国外网站需要找代理 2 反向代理: 客户端能访问外部的web,但是不能访问目标web,目标web所在的网络内一台机器充当目标web的代理

用apache做为代理下载本地pdf文件

有一些公司会用apache做为代理,下载服务器上的pdf文件.以下是apache做为代理的配置 一. 环境 centos6.5  192.168.69.3 二. yum安装apache 服务 [[email protected] ~]$ rpm -qa httpd    //查看是否有rpm包安装的apache服务httpd-2.2.15-60.el6.centos.5.x86_64 [[email protected] ~]$ rpm -e httpd-2.2.15-60.el6.centos

使用内网电脑做代理服务器

工具: vmplayer 用于安装ubuntu虚拟机 OpenSSH 提供ssh转发服务 plink ssh代理客户端 teamviewer 搭建穿透内网的VPN Proxifier 代理设置软件 步骤: 1.服务器和客户端均为win操作系统,这是使用teamviewer搭建VPN的前提,并通过vmplayer安装ubuntu虚拟机,在虚拟机内安装OpenSSh,ubuntu下的安装方法 sudo apt-get install ssh 2.修改服务器win下的vmnat.conf文件,可以用e

入门篇:Ubuntu用apache做web服务器

一.安装Apache Ubuntu提供了3个apache2的软件包,它们分别是apache2-mpm-worker.apache2-mpm-prefork.apache2-mpm-event.如果你在安装Ubuntu操作系统<入门篇:ubuntu server 安装教程>的时候你选择安装了LAMP包的话,那么安装的是apache2-mpm-prefork.如果你没有选择安装LAMP包,安装完系统之后,执行下面的命令安装apache2这个软件包时,安装的是apache2-mpm-worker:s

用nginx做代理服务器上网

用nginx做代理服务器上网 目前现状:只有1个机器能上网(web),其他机器不能方法:能上网的做一个代理web服务器中转,其他机器连接它即可.采用nginx Nginx配置如下: server{        resolver x.x.x.x;        listen 82;        location / {                proxy_pass http://$http_host$request_uri;        }} 注意项:1. 不能有hostname2.

nginx + apache 做端口(转发)

nginx + apache 做端口转发 最近公司需要搭建一个内容管理系统,用的框架是dedecms,没有多考虑,首选的就是apache,因为公司的服务器是centos,所以一通折腾之后安装好了apache,php,以及各种模块及依赖库.      在安装好之后启动apache,发现无法启动,说是80端口被占用,经过netstat -anp | grep 80 之后发现是ngnix占用了该端口.因为这台服务器一直在使用nginx + unicorn 来跑rails项目,所以这个nginx是万万不

apache做反向代理服务器

apache代理分为正向代理和反向代理: 1 正向代理: 客户端无法直接访问外部的web,需要在客户端所在的网络内架设一台代理服务器,客户端通过代理服务器访问外部的web(需要在客户端的浏览器中设置代理服务器) 适用于: ①局域网的代理服务器(一般是网关,相当于squid的一般用法) ②访问某个受限网络的代理服务器,如教育网访问某些国外网站需要找代理 2 反向代理: 客户端能访问外部的web,但是不能访问目标web,目标web所在的网络内一台机器充当目标web的代理,客户端直接访问代理就像访问目

Apache配置代理服务器的方法(1)

众所周知Apache是目前最优秀的HTTP服务器.实际上它不仅能当作服务器使用,也能够被用来架设代理服务器.本文就如何使用Apache架设HTTP代理服务器进行说明. 本文将基于Win32版的Apache 2.0.47进行说明.以前的Apache 1.x版配置方法稍有不同,但这里不作说明. 首先是Apache的安装.从 http://www.apache.org 上下载Apache的安装程序,双击安装程序进行安装.安装好之后屏幕右下方系统托盘中会出现一个红色的羽毛状图标,那就是Apache的控制

Apache配置代理服务器的方法(2)

Proxy指令后面的*号表示客户端使用代理服务器访问的目的地址.在上面两个例子中,*号表示所有地址,即禁止使用代理服务器访问所有地址.而如果想仅禁止某一些地址时,可以参考下面的例子: Order deny,allow Deny from all Allow from 127.0.0.1 Order allow,deny Allow from all Deny from 127.0.0.1 上面这个例子的意思是,仅允许本地计算机访问 http://www.google.com/ ,并且禁止本地计算