Apache启用modproxy做正向代理反向代理详细版.docx

上传人:b****7 文档编号:8835465 上传时间:2023-02-02 格式:DOCX 页数:20 大小:33.31KB
下载 相关 举报
Apache启用modproxy做正向代理反向代理详细版.docx_第1页
第1页 / 共20页
Apache启用modproxy做正向代理反向代理详细版.docx_第2页
第2页 / 共20页
Apache启用modproxy做正向代理反向代理详细版.docx_第3页
第3页 / 共20页
Apache启用modproxy做正向代理反向代理详细版.docx_第4页
第4页 / 共20页
Apache启用modproxy做正向代理反向代理详细版.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

Apache启用modproxy做正向代理反向代理详细版.docx

《Apache启用modproxy做正向代理反向代理详细版.docx》由会员分享,可在线阅读,更多相关《Apache启用modproxy做正向代理反向代理详细版.docx(20页珍藏版)》请在冰豆网上搜索。

Apache启用modproxy做正向代理反向代理详细版.docx

Apache启用modproxy做正向代理反向代理详细版

Apache启用mod_proxy做正向代理、反向代理(详细版)

如果没有apache没有安装proxy模块,可以不用重新编译添加模块。

cd/home/cpeasyapache/src/httpd-2.2.17/modules/proxy

/usr/local/apache/bin/apxs-c-imod_proxy.cproxy_util.c(ps必须2个c一起编译,不然会报错)

/usr/local/apache/bin/apxs-c-imod_proxy_http.cproxy_util.c

apache提供了mod_proxy模块用于提供代理服务,能够支持的包括正向代理、反向代理、透明代理、缓存、负载均衡,HTTP代理、FTP代理、SSL代理等若干强大的功能。

通常我们使用的比较多的,是正向代理。

也就是在浏览器的网络连接属性框中,填写上一个代理服务器的ip和端口,即可通过代理服务器中转,去浏览网页。

配置正向代理非常简单:

首先在apache上启用mod_proxy模块,需要注意的是,如果在apache-2.2上,则还需要加载名为mod_proxy_http的模块。

因为2.2系列把代理功能都拆分成N个小模块了。

打开apache的conf,加入如下几行:

(全局配置)

ProxyRequestsOn

ProxyViaOn

Orderdeny,allow

Denyfromall

Allowfromall

然后保存退出,重启加载apache服务:

/etc/init.d/httpdrestart或者做graceful也可以。

现在即可在浏览器的网络连接属性框中,填写上your_apache_server_ip的ip地址,端口是80,开始用代理了。

使用apache提供的代理,也可以加身份验证,或者设置ACL来限制客户端来源等。

这些配置就和普通的apache站点配置一样。

配置反向代理就是个非常有用的功能。

例如从某地访问google太慢,但是机房服务器上很快,则可在服务器上设置反向代理连接到google,也就是把google映射到服务器上来访问。

然后新建一个网站,即创建一个标准的配置段。

这里我们将站点/google目录设置为google的反向代理。

在这段里边,加入下边一内容:

ProxyRequestsOff

ProxyPass/google

#ProxyPassReverse/google

然后保存配置文件重新启动apache。

现在即可使用浏览器来访问我的网站的/google目录。

当打开这个目录的时候,会发现页面是google。

点击google的下级页面,都可以正常的打开访问,而此时浏览器中的代理服务器并未设置任何内容——这就是反向代理。

通过反向代理,我们可以将web服务器放置在防火墙后,在web服务器前端使用mod_proxy配置反向代理,并打开apache的mod_cache缓存模块,更可以极大的提高对静态内容的访问性能。

在RewriteRule指令中使用[P]标记也可以:

RewriteEngineOn

RewriteRule^/google/(.*)[P]

首先要做的事情是:

访问域名xxx->通过代理服务器B->访问服务器C

首页把域名和指到自己的vps服务器确认自己的服务器中的Apache已经启用了proxymod和proxyhttp_mod,

sudo/etc/init.d/apache2restart

然后在apache中增加站点

文件配置如下

ServerAdminwebmaster@

ServerName

ServerAlias

ProxyRequestsOff

Orderdeny,allow

Allowfromall

ProxyPreserveHoston

ProxyPass/

ProxyPassReverse/

然后:

sudo/etc/init.d/apache2reload

这样你就可以使用你的域名访问外面的服务器了

———————————————————————-

apache增加mod_cache模块参考链接:

apachemod_cache模块的编译

配apachemod_cache后/usr/local/apache/bin/apachectlrestart

apache出现以下信息:

Cannotload/usr/local/apache/modules/mod_cache.sointoserver:

/usr/local/apache/modules/mod_cache.so:

undefinedsymbol:

cache_generate_key_default

正规解决方案:

modules/cache下面有很多的.c文件

mod_cache.c编译得到mod_cache.so主要用来控制整个apache的cache功能。

mod_file_cache.c,mod_mem_cache.c,mod_disk_cache.c这个三个文件编译后得到各自的cache支持模块。

[root@zhang2cache]#find.-name“*cache*.c”-print

./cache_storage.c

./cache_pqueue.c

./mod_cache.c

./cache_hash.c

./mod_mem_cache.c

./mod_file_cache.c

./mod_disk_cache.c

./cache_util.c

./cache_cache.c

mod_cache.c还需要其他的程序来进行工作,包括cache_*.c这些文件。

因此apxs动态加载一个模块的时候,需要把这些文件和mod_cache.c一起编译:

编译mod_cache:

/usr/local/apache/bin/apxs-c-i-amod_cache.ccache_util.ccache_cache.ccache_storage.ccache_pqueue.ccache_hash.c

编译mod_disk_cache:

/usr/local/apache/bin/apxs-c-i-amod_disk_cache.ccache_util.ccache_cache.ccache_storage.ccache_pqueue.ccache_hash.c

编译mod_mem_cache:

/usr/local/apache/bin/apxs-c-i-amod_mem_cache.ccache_util.ccache_cache.ccache_storage.ccache_pqueue.ccache_hash.c

至此,apache已经支持缓存了,再加上缓存配置就Ok!

1.修改httpd.conf

示例:

LoadModulecache_modulemodules/mod_cache.so

#LoadModuledisk_cache_modulemodules/mod_disk_cache.so

#如果你想使用mod_disk_cache代替mod_mem_cache的话,

#那么就取消上面的注释,并将下面的LoadModule行加上注释

CacheRoot/cacheroot

CacheEnabledisk/

CacheDirLevels5

CacheDirLength3

LoadModulemem_cache_modulemodules/mod_mem_cache.so

CacheEnablemem/

MCacheSize4096

MCacheMaxObjectCount100

MCacheMinObjectSize1

MCacheMaxObjectSize2048

#在充当代理的时候,不缓存update-list下的内容

CacheDisablehttp:

//security.update.server/update-list/

2.创建缓存目录

#mkdir/var/www/cacheroot

#chownroot.apache/var/www/cacheroot

#chmod775/var/www/cacheroot

3.测试

重启apache,访问网站,会在/var/www/cacheroot下看到一堆文件夹。

Apache2缓存压缩模块

Apache2参考文档

编译模块

cdhttpd-2.2.11/modules

mod_expires.cmod_headers位于metadata目录下

mod_deflate.c位于filters目录下

apxs-icamod_deflate.c生成so文件

#vihttpd.conf下添加:

LoadModuledeflate_modulemodules/mod_deflate.so

LoadModuleexpires_modulemodules/mod_expires.so

LoadModuleheaders_modulemodules/mod_headers.so

modules/cache下面有很多的.c文件,大致用途如:

mod_cache.c编译得到mod_cache.so主要用来控制整个apache的cache功能。

mod_file_cache.c,mod_mem_cache.c,mod_disk_cache.c这个三个文件编译后得到各自的cache支持模块。

mod_cache.c还需要其他的程序来进行工作,包括cache_*.c这些文件。

因此apxs动态加载一个模块的时候,需要把这些文件和mod_cache.c一起编译:

perl/usr/local/apache2/bin/apxs-ciamod_cache.ccache_util.ccache_cache.ccache_storage.ccache_pqueue.ccache_hash.c

安装时编译:

#tar–zxvfhttpd-2.0.49.tar.gz

#cdhttpd-2.0.49

#./configure–enable-cache–enable-disk-cache–enable-mem-cache

#mke

#makeinstall

Apache从2.0开始就已经可以使用缓存模块了,不过在2.0的时候还是实验性的,到了2.2已经完全可以放心的使用。

Apache的缓存实现主要依靠mod_cache、mod_disk_cache、mod_file_cache及mod_mem_cache。

只需在配置编译的时候加上参数:

–enable-cache、–enable-disk-cache、–enable-file-cache、–enable-mem-cache即可。

关于Apache的编译安装本文就不再说了,可以参考以前的文章。

这里主要介绍一下如何配置使用Apache的缓存功能。

具体来说,Apache的缓存方式有两种,一种是基于硬盘文件的缓存,由mod_disk_cache实现,另一种是使用内存缓存,由mod_mem_cache实现,不过它们都是依赖mod_cache模块的,mod_cache模块提供了一些缓存配置的指令供它们使用,而mod_file_cache模块是搭配mod_mem_cache模块使用的,下面分别进行介绍。

1、基于硬盘文件的缓存

基于硬盘文件存储的缓存由mod_disk_cache模块实现,先看个简单的配置例子:

CacheDefaultExpire86400

CacheEnabledisk/

CacheRoot/tmp/apacheCache

CacheDirLevels5

CacheDirLength5

CacheMaxFileSize1048576

CacheMinFileSize10

把上面的配置加到Apache的httpd.conf文件中,如果缓存相关的模块都已经编译进了Apache的核心,则无需加载模块,直接就能使用上面的指令。

指令的详细说明如下:

CacheDefaultExpire:

设定缓存过期的时间(秒),默认是1小时,只有当缓存的文档没有设置过期时间或最后修改时间时这个指令才会生效

CacheEnable:

启用缓存,第1个参数是缓存类弄,这里当然是disk了,第2个参数是缓存路径,指的是url路径,这里是缓存所有的东西,直接写上“/”即可,如“/docs”则只缓存/docs下的所有文件

CacheRoot:

缓存文件所在的目录,运行Apache的用户(如daemon或nobody)要能对其进行读写,如果不清楚的话可以直接设置成777,请手动建立该目录并设置好访问权限

CacheDirLevels:

缓存目录的深度,默认是3,这里设置为5

CacheDirLength:

缓存目录名的字符长度,默认是4,这里设置为5

CacheMaxFileSize和CacheMaxFileSize:

缓存文件的最大值和最小值(byte),当超过这个范围时将不再缓存,这里设置为1M和10bytes

基于硬盘文件存储的文件基本上就这些内容,设置好后重启Apache应该就能使用了。

一切正常的话,可以在缓存目录下看到Apache自动建立的一些目录和缓存的数据文件。

2、基于内存的缓存

基于内存的缓存主要由mod_mem_cache模块实现,还是看个简单的配置吧,这样比较直观:

-)

CacheEnablemem/

MCacheMaxObjectCount20000

MCacheMaxObjectSize1048576

MCacheMaxStreamingBuffer65536

MCacheMinObjectSize10

MCacheRemovalAlgorithmGDSF

MCacheSize131072

简单说一下上面一些指令的意思:

CacheEnable:

启用缓存,使用基于内存的方式存储

MCacheMaxObjectCount:

在内存中最多能存储缓存对象的个数,默认是1009,这里设置为20000

MCacheMaxObjectSize:

单个缓存对象最大为1M,默认是10000bytes

MCacheMaxStreamingBuffer:

在缓冲区最多能够放置多少的将要被缓存对象的尺寸,这里设置为65536,该值通常小于100000或MCacheMaxObjectSize设置的值

MCacheMinObjectSize:

单个缓存对象最小为10bytes,默认为1bytes

MCacheRemovalAlgorithm:

清除缓存所使用的算法,默认是GDSF,还有一个是LRU,可以查一下Apache的官方文档,上面有些介绍

MCacheSize:

缓存数据最多能使用的内存,单位是kb,默认是100kb,这里设置为128M

保存重启Apache基于内存的缓存系统应该就能生效了,根据需要可以使基于内存的存储或硬盘文件的存储方式一起使用,只要指明不同的URL路径即可。

3、注意事项

使用缓存需要注意如下事项:

要使用缓存,必须使用指令CacheEnable启用它,目前可用的缓存类型为disk或mem,禁止缓存可以使用CacheDisable,如CacheDisable/private

待缓存的URL返回的状态值必须为:

200、203、300、301或410

URL的请求方式必须是GET方式

发送请求时,头部中包含“Authorization:

”的字符串时,返回的内容将不会被缓存

URL包含查询字符串,如问号?

后的那些东西,除非返回的内容包含“Expires:

”,否则不会被缓存

如果返回的状态值是200,则返回的头部信息必须包含以下的一种才会被缓存:

Etag、Last-Modified、Expires,除非设置了指令CacheIgnoreNoLastModOn

如果返回内容的头部信息“Cache-Control:

”中包含“private”,除非设置了指令CacheStorePrivateOn,否则不会被缓存

如果返回内容的头部信息“Cache-Control:

”中包含“no-sotre”,除非设置了指令CacheStoreNoStoreOn,否则不会被缓存

如果返回内容的头部信息“Vary:

”中包含了“*”,不会被缓存

4、其它一些指令的介绍

如果你的网站有几个文件的访问非常频繁而又不经常变动,则可以在Apache启动的时候就把它们的内容缓存到内存中(当然要启用内存缓存系统),使用的是mod_file_cache模块,具体如下:

有多个文件可以用空格格开

MMapFile/var/www/html/index.html/var/www/html/articles/index.html

上面是缓存文件的内容到内存中,除此之外,还可以只缓存文件的打开句柄到内存中,当有请求进来的时候,Apache直接从内存中获取文件的句柄,返回内容,和MMapFile指令很像,具体如下:

CacheFile/var/www/html/index.html/var/www/html/articles/index.html

上面两个指令所缓存的文件如果有修改的话,必须重启Apache或使用graceful之类的方式强制使Apache更新缓存数据,否则当用户访问的时候获取的不是最新的数据。

有时候需要根据某些特殊的头部信息来决定是否进行缓存,则可以使用如下指令:

当头部信息中包含Set-Cookie时则跳过不进行缓存操作

CacheIgnoreHeadersSet-Cookie

有时候需要缓存的时候跳过URL中的查询字符串?

使用如下指令:

CacheIgnoreQueryStringOn

Apache的缓存系统不仅可以缓存服务器本身的文件,也可以缓存通过代理得到的内容,对了,Apache可以像Squid一样做代理,而且做的还不错,下篇文章就介绍一下Apache的代理功能吧。

善用Apache的缓存功能,可以让你的网站速度提升不少。

做为一个网站来说,虽然可用的各种缓存方案很多,但在Web服务器层做缓存的效率还是很值得一试的。

更多信息请参考:

http:

//httpd.apache.org/docs/2.2/caching.html

一个httpd.conf的配置例子:

#一个连接的最大请求数量

MaxKeepAliveRequests10000

#NT环境,只能配置这个参数来提供性能

#每个进程的线程数,最大1920。

NT只启动父子两个进程,不能设置启动多个进程

ThreadsPerChild1900

#每个子进程能够处理的最大请求数

MaxRequestsPerChild10000

LoadModulecache_modulemodules/mod_cache.so

LoadModuledisk_cache_modulemodules/mod_disk_cache.so

LoadModulemem_cache_modulemodules/mod_mem_cache.so

CacheForceCompletion100

CacheDefaultExpire3600

CacheMaxExpire86400

CacheLastModifiedFactor0.1

CacheEnabledisk/

CacheRootc:

/cacheroot

CacheSize327680

CacheDirLength4

CacheDirLevels5

CacheGcInterval4

CacheEnablemem/

MCacheSize8192

MCacheMaxObjectCount10000

MCacheMinObjectSize1

MCacheMaxObjectSize51200

—————————————————————————————————–

一、前言

當人們對於網路的需求愈來愈高,網路頻寬的要求也日漸增加,在網路初期,有個文字模式的BBS或GOPHER已是非常今人興奮的事情,發展至WINDOW介面時,魔賽克、NETSCAPE等瀏覽器在網路上的應用,讓我們可以取得更豐富的資料,而今,上網看電視、聽廣播都是輕而易舉的事,但是對於網路傳輸流量也愈來愈大,所以,善用網路資源的同時,也更該節省網路資源。

二、Proxy的概念

在安裝之前我們先釐清一個有關PROXY的概念,事實上PROXYSERVER有很多種類,如IPProxy、MailProxy、ProxyCaching…等,而我們一般所稱的Proxy是指ProxyCaching。

如果校園網路內有了Proxy伺服器,且所有CLIENT端的電腦都連接到Proxy伺服器上,當網域內有一台機器的瀏覽器透過ProxyServer瀏覽過某個網站上的網頁後,這個被瀏覽過的網站資料就被複製一份到ProxyServer的cache(快取)空間裡,當其他使用者也要瀏覽這個已瀏覽過的網站時,就不用再透過對外的線路傳輸網頁資料,而是直接從ProxyServer的cache裡讀取網頁資料,所以ProxyServer可以大大的節省頻寬與加快用戶端讀取資料速度。

其實Apache也有Proxy的功能,早期的CERN也有相同的功能,但是他們主要功能是WWWSERVER,所以使用的人很少。

在Unixlike系統中,Squid是使用率最廣的,因為SquidProxyServer是專為caching所設計的,Squid有一套自己的Cache階層體系,簡單的說就是ProxyServer間的關係有父(parent)、子(child)、兄弟姊妹(sibling)三種關係存在。

善用這種階層的架構可以降低server的負載和資料傳輸的速度。

三、安裝Squid

如果我們在安裝RedHat+

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1