Apache

Apache配置中如何在module中传递CGI变量

Apache中有不少变量支持Env变量,但是CGI中的Request相关信息的变量,却不是每个module都能拿到的,这部分信息绝大部分可以在mod_rewrite中拿到。需要专递这些信息,主要是要把mod_rewrite中特有的这些变量设置到env中就可以了,类似如下。

mllm © 2004-2012, allblue
RewriteEngine on
RewriteCond %{REMOTE_PORT} (.*)
RewriteRule .* - [E=P_R:%1]
Parsed in 0.008 seconds

把所有的变量正则回溯到组1中,然后设置一个泛匹配,但以横线表面此规则不改动原来的URL,在FLAG区进行ENV的设置。然后在其他module中再取用这个新创建的ENV变量即可。

Apache&SSL

最终目的是建立https,为了能在这个系统上启用安全链接。其实也是个老东西了,很多人都做过类似的配置。但是我这次没有简单的按部就班。参考了一些资料,从openssl做起。

网上大部分的资料都是做自签名证书,做法也各有不同。不过我这次是从openssl开始,做了一个自己的CA证书,再从这个证书生成Apache所要求证书和签署生成的证书。这样做的好处是,我可以在从自己的CA生成客户端证书,如果将来需要这样的强加密的话。

openssl几乎是所有Linux发行版的必装组件。但是真正好好使用它的人未必很多,很多都是靠第三方程序直接调用openssl模块。openssl自带了一个很好用的脚本,用来进行各种各种证书操作。

SSL Certificates HOWTO记录了一些关于openssl方面的资料,感觉也就前面几页有用,后面几乎没说什么实际的应用。其中主要针对CA.pl这个自带的使用进行了比较实际的讲解。

mod_proxy中的ProxyPassReverse

仔细看手册发觉自己从前对ProxyPassReverse指令的理解有问题,其实ProxyPassReverse对代理系统本身的工作没有任何影响,它的作用是用来重写后台被代理服务器反馈中的相应url,说穿了就是mod_rewrite的一个小功能。如果后台服务器会redirects的地址有多个的话,那么这个语句也要有多句,才能让外部看起来是完全在同一台服务器上被服务。这里的特别是指后台被代理服务器有多个IP的情况。

这次的发现是从ZEUS那里得到了启发,因为它的gateway系统有特别指定是否重写redirects的部分。真是应了那句温故而知新的老话。

同步内容