服务器上已经装了apache,但没有添加http代理的相关模块,比较麻烦,需要手动添加需要的module。
1. 首先,加入缓存支持的模块mod_cache.c,必须和cache_util.c cache_cache.c cache_storage.c cache_pqueue.c cache_hash.c一起编译:
# cd /root/httpd-2.2.4/modules/cache/
# /usr/local/apache/bin/apxs -i -c ./mod_cache.c cache_util.c cache_cache.c cache_storage.c cache_pqueue.c cache_hash.c
# /usr/local/apache/bin/apxs -i -c ./mod_disk_cache
# vi /usr/local/apache/conf/httpd.conf加入:
LoadModule cache_module modules/mod_cache.so
LoadModule disk_cache_module modules/mod_disk_cache.so
<IfModule disk_cache_module>
CacheRoot "/usr/local/apache/httpCathe"
CacheDirLevels 5
CacheDirLength 3
</IfModule>
取消Include conf/extra/httpd-vhosts.conf的注释
2. 加上vhost,vi /usr/local/apache/conf/extra/http-vhost.conf
<VirtualHost *:80>
RewriteEngine on
CacheEnable disk /
ProxyPass / http://10.170.78.158:8082/
ProxyPassReverse / http://10.170.78.158:8082/
</VirtualHost>
3. 尝试重启apache,但出现错误:invalid command "proxypass" ,perhaps misspelled or defined by a module not included in the server configuration
原来是没有安装mod_proxy模块。
# cd /root/httpd-2.2.4/modules/cache/
#/usr/local/apache/bin/apxs -i -c ./mod_proxy.c proxy_util.c (也是走了弯路才知道要两个一起编)
# /usr/local/apache/bin/apxs -c -i ./mod_proxy_ajp.c ajp*.c (同上)
# /usr/local/apache/bin/apxs -c -i ./mod_proxy_connect.c (connect.c和上面两个一起编不会报错但不生成.so文件,只能单独编)
然后重启apache就可以用了。
新问题:1. 原来apache的80端口已经用作HLS发流服务器,所以和portal有冲突。解决办法:编辑conf/httpd.conf,增加一行:Listen 8088。编辑conf/extra/http-vhost.conf,将vhost端口改为8088。重启apache,搞定
2. 配置好的apache缓存目录没有任何文件,解决办法:修改缓存目录权限,chmod 777 /usr/loacal/apache/httpCache/。重启apache,搞定