apache自建cdn缓存服务器的实现方式,涉及反向代理,缓存,伪静态

[ 2020-05-27 16:21:18 | 作者: admin ]
字号: | |
p.s.具体实现过程中,反向代理和缓存涉及较多模块,另外虚拟主机的反向代理的中使用伪静态需要加[P]标记proxy,不然不会生效。我测试了下
放.htaccess中没用,不知道是不是AllowOverride 设置问题,所以直接放 httpd-vhosts.conf文件
RewriteEngine On
RewriteRule /news_(.*).html$ /news?classid=$1 [L,P]
RewriteRule /shop_(.*).html /shop?id=$1 [L,P]


使用apache代理及缓存的目的:
        将远程服务器(没有任何控制访问权限)上发布的服务,利用代理映射到本地服务器(可自由控制)。有效解决跨域问题。
        利用缓存可以有效解决远程服务器的部分GET请求,如图片,JS等静态文件响应慢的问题。

配置步骤:
        编辑httpd.conf,打开相关模块
# 硬盘缓存模块
LoadModule cache_module modules/mod_cache.so
# 内存缓存模块
LoadModule mem_cache_module modules/mod_mem_cache.so
# 代理模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
# 虚拟主机模块
LoadModule vhost_alias_module modules/mod_vhost_alias.so

2.编辑httpd.conf,打开引入虚拟主机配置,也可以直接将虚拟主机配置在httpd.conf,使用include的目的是为了提高虚拟主机配置的可读性方便后期维护。

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

3.编辑上一步中的extra/httpd-vhosts.conf,默认的那几个虚拟主机可以删掉,添加新的虚拟主机
<VirtualHost *:80>
         # 浏览器中输入此服务名,才会访问到此虚拟机
         ServerName 127.0.0.1
         ErrorLog "logs/dummy-host3.cc.com-error.log"
         CustomLog "logs/dummy-host3.cc.com-access.log" common
        
         # 代理配置
         ProxyPass / http://www.baidu.com/
         # 反向代理配置,用于处理地址重定向
         ProxyPa***everse / http://www.baidu.com/
         # 将根路径下的所有请求缓存到服务器硬盘中,也可以配置其它路径
         CacheEnable disk /
         # 设置缓存文件的保存位置
         CacheRoot E:/cc/www/proxy
         # 默认的缓存过期时间,单位:秒
         CacheDefaultExpire 86400

</VirtualHost>



另一个缓存设置的配置参考
##cache配置#
##cache文件存放目录
# CacheRoot "/usr/local/apache2/cache"
##启用cache调用的url根,也可以是/forum等其他根路径
# CacheEnable disk /
# CacheEnable fd /
##不启用cache的配置,对/bbsadmin下的应用不进行缓存
# CacheDisable /bbsadmin
##CacheDirLevels指定了子目录的层数,CacheDirLength指定了每级子目录名的字符数。
# CacheDirLevels 2
# CacheDirLength 1
# #缓存所有没有在header中设置Cache-Control或Pragma为no-cache的资源
# #CacheIgnoreCacheControl On
##缓存所有没有在header中设置LastMod的资源
# CacheIgnoreNoLastMod On
##设置缓存的最大失效时间,默认为86400(1天),单位是秒
# CacheMaxExpire 300
##用来从回应里 Last Modified 资讯算出 expire date
# CacheLastModifiedFactor 0.05

# #一个连接的最大请求数量
# MaxKeepAliveRequests 10000
# #NT环境,只能配置这个参数来提供性能
# <IfModule mpm_winnt.c>
# #每个进程的线程数,最大1920。NT只启动父子两个进程,不能设置启动多个进程
# ThreadsPerChild 1900
# 每个子进程能够处理的最大请求数
# MaxRequestsPerChild 10000


4.测试,在浏览器中输入http://127.0.0.1 看看是否能够打开百度主页了。

提示:当被代理的服务器地址上找不到文件时,apache会在本地服务路径中查找文件,所以只要在本地服务器DocumentRoot下有crossdomain.xml,就不用担心flash在做跨域请求时出错的情况。





参考:
apache配置远程代理及缓存 https://blog.51cto.com/ccjava/1738671
Apache HTTP 服务器 2.4 文档 http://httpd.apache.org/docs/2.4/
LAMP高并发处理方案 —— 缓存篇 https://www.codesocang.com/jquerymobile/seo/3/index.html
Apache缓存模块 https://www.cnblogs.com/feihongwuhen/archive/2009/12/02/7171043.html
apache中缓存和刷新问题 https://blog.csdn.net/foreverme/article/details/7942573
URL重写:RewriteCond指令与RewriteRule 指令格式 https://www.cnblogs.com/scgw/archive/2011/05/01/2033730.html
apache伪静态规则解析 https://www.cnblogs.com/baker95935/p/9791231.html
Apache-rewrite+13个经典案例 https://blog.51cto.com/wuhui1994/2060329
全面理解.htaccess语法中RewriteCond和RewriteRule意义 https://www.cnblogs.com/stephenykk/p/5376914.html
apache反向代理配置负载均衡 https://blog.csdn.net/kong0csd/article/details/84050354
[最后修改由 admin, 于 2020-06-06 09:08:22]
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=2673

这篇日志没有评论。

此日志不可发表评论。