apache2.x 配置反向代理 不得不说的事情
今天在linux上配置apache反向代理,真是折腾人,故此记下:
网上查到的配置倒是很简单,在httpd.conf中:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule authz_host_module modules/mod_authz_host.so
ProxyPass /rp1 http://127.0.0.1:30080/
ProxyPassReverse /Test http://127.0.0.1:30080
<proxy http://127.0.0.1:30080>
AllowOverride None
Order Deny,Allow
Allow from all
</proxy>
如上所示,配置了/rp1的反向代理指向http://127.0.0.1:30080
但是我今天遇到的问题是,我是新编译的apache,发现需要的的模块都没有,于是需要手动编译,对于proxy模块,需要使用命令:
APACHE_PATH/bin/apxs -i -a –c APACHE_SOURCE_PATH/modules/proxy/mod_proxy.c APACHE_SOURCE_PATH/modules/proxy/proxy_util.c
其中APACHE_PATH指代apache安装目录,APACHE_SOURCE_PATH指代apache源码目录。
注意proxy下模块需要配合 proxy_util.c 一起编译才行,否则编译的模块不能加载。
而且LoadModule authz_host_module modules/mod_authz_host.so这个模块是需要的,否则,会报Order 命令不识别:
Invalid command 'Order', perhaps misspelled or defined by a module not included in the server config
关于模块编译参见http://kazge.com/archives/815.html
我写这篇文章起因是我要在我的远程主机上配置反向代理到我的本地机器
之前说的http://kazge.com/archives/798.html 使用tunnel还是不够的,因为不知为什么,即使我在远程主机上暴露了tunnel端口,但是通过internet任然无法访问ssh建立的通道,后来想个办法,使用apache做反向代理,apache监听开放的单口比如8080,使用反向代理转到已建立隧道的端口上,这样才行。