apache 禁止上传目录解析php文件

禁止网站某个目录的php解析是出于安全因素考虑,像一些上传图片的目录,通常这会被细心的人利用上,他上传一个php文件到图片目录下,如果我们不限制该目录下的php解析,那么他就会利用这个漏洞上传web shell从而获得服务器的权限。所以我们需要把这些可写目录限制php的解析,然而我们还忽略了另一个问题,有些目录虽然限制了php解析,但是用户访问这些php文件的时候会把php的源文件下载下来,从而看到了这些文件的源代码,如果是用户自己写的恶意php代码,那当然没有任何问题,但是,如果他们下载到了我们自己的网址上的源代码,那就不好了。所以,除了要禁止php的解析外,还需要限制一下该目录下的php文件不让下载。配置如下:

<Directory "/home/www/data/">
        php_flag engine off
        <Files ~ ".php">
        Order allow,deny
        Deny from all
        </Files>
</Directory>

其实,我们不加禁止解析的那一行“php_flag engine off” 也是没有问题的。
转自:http://www.aminglinux.com/bbs/thread-6493-1-1.html

查看Apache log,进行log排序

最近网站老是被刷,以前没对log进行分析和排序过。今天正在学习,总结总结:
日志第一个字段就是ip地址,字段之间分隔符是空格:
1. 使用awk:(awk默认分割符就是空格,所以-F选项可以不要)
awk -F ' ' '{print $1}' /var/www/html/apache-tomcat-7.0.27/logs/localhost_access_log.2012-12-27.txt | sort | uniq -c | sort -u
使用awk命令输出每行的第一列 ,-F ‘ ’表示每一行上字符串之间间隔符号是空格,完了用sort排序,接着用uniq -c累计,然后再次用sort  -u对累计结果排序。
2.使用cut:(需要注意的是,cut默认的分隔符是<tab>,所以-d选项是必须要的)
cut -d ' ' -f1 /var/www/html/apache-tomcat-7.0.27/logs/localhost_access_log.2012-12-27.txt | sort | uniq -c | sort -u
原理同上了。
通过ip数量的统计,将攻击IP添加到iptables

Nginx solution for Apache ProxyPassReverse

Let’s say we want to establish simple proxy between myhost:80 and myapp:8080. The Apache rule is simple:

APACHE

<VirtualHost myhost:80>
    ServerName myhost
    DocumentRoot /path/to/myapp/public
    ProxyPass / http://myapp:8080/
    ProxyPassReverse / http://myapp:8080/
</VirtualHost>

But Nginx does not have ProxyPassReverse…The solution is adding few missing HTTP headers.

Please also see http://wiki.nginx.org/HttpProxyModule#proxy_redirect , This wiki is partly incorrect. If you need to do location header rewriting. You will need to use proxy_redirect as well.
NGINX:

server {
  listen myhost:80;
  server_name  myhost;
  location / {
    root /path/to/myapp/public;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_pass http://myapp:8080;
  }
}

ubuntu下的apache2启用rewrite

在控制台输入

sudo a2enmod rewrite

提示:

Enabling module rewrite 

成功开启后并出现如下提示:

Run '/etc/init.d/apache2 restart' to activate new configuration!

提示重启后更新新的配置。
控制台输入:

 sudo /etc/init.d/apache2 restart 

重启后完成就完成了。

补充:
主要注意以下几点
1, apache一定得开启mod_rewrite ##在phpinfo里面的load modules栏目里找到或者httpd.conf里面有一堆LoadModule的地方找到就可以了,一般默认都开着
2, httpd.conf 基于路径的allowoverride设置 比如你的joomla装在/documentroot/test里面,应该在类似的地方添加

   <Directory /test>
   Allowoverride .htaccess      ##或者 Allowoverride all ,,,,, Order和Deny参数可以不写
   </Directory>

3, .htaccess中的 RewriteBase / 这里,如果你配置基于路径的虚拟主机,比如

   <virtualhost *:80>
   .....
   documentroot /.../root/test
   ....
   </virtualhost>

的话
即便joomla安装在subfolder里,RewriteBase这里也不用改,因为这个东西似乎是针对url的
4,RewriteCond一定要按路径改
5, 先把htaccess.txt改成.htaccess再从后台开seo开关