原文地址: http://ilia.ws/archives/226-Beware-of-the-default-Apache-2-config-for-PHP.html
一周之前,我在升级开发服务器的时候,发现了一个php + apache2在配置上的安全隐患。
一些linux的发行版的默认配置,都存在这个问题。
在这些发行版里面(包括Gentoo。不包括CentOS,Ubuntu),apache2的默认的php配置为:
<IfModule mod_mime.c>
AddHandler application/x-httpd-php .php
AddHandler application/x-httpd-php-source .phps
</IfModule>
目的是把 file.php当作php文件来解析,
但是file.php.txt也会被当作php文件解析出来!
修改成以下的配置就OK了:
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>
apache2+PHP的默认配置下,
如果apache发现一个不能识别的mine类型(文件扩展名),会用php来解析它。
比如在apache根目录下放一个 a.aaaaaaa
里面内容是
访问 http://localhost/a.aaaaaaa
会得到:
OK
为什么要再加一个apache呢?
看一下现在的URL:
Jira 的访问地址是 http://192.168.0.163:10000/jira
Confluence的地址是 http://192.168.0.163:20000/confluence
两个端口不同,不太好记。。。
所以在前面再放一个apache, 利用apache的proxy功能,转发web请求到后面的tomcat.
修改apache的配置文件 conf/httpd.conf
先加载二个模块:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
再加入以下的配置:
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /jira http://192.168.0.163:10000/jira
ProxyPassReverse /jira http://192.168.0.163:10000/jira
ProxyPass /confluence http://192.168.0.163:20000/confluence
ProxyPassReverse /confluence http://192.168.0.163:20000/confluence
重启apache.
以后jira的访问地址就变成了 http://192.168.0.163/jira
Confluence的地址变成了 http://192.168.0.163/confluence