9. 配置防盗链
http://www.lishiming.net/thread-71-1-1.html
防止别人的网站,放你网站图片的链接,
位置一般情况下在 /usr/local/apache/conf/httpd.conf
或者apache 2.2 的 /usr/local/apache2/conf/extra/httpd-vhost.conf
添加
SetEnvIfNoCase Referer "^http://www.ccvita.com" local_ref
SetEnvIfNoCase Referer "^http://ccvita.com" local_refSetEnvIfNoCase Referer "^$" local_ref
<filesmatch ".(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
还一种写法,是用正则的,这种写法在各个版本的apache比较通用。
写法是
SetEnvIfNoCase Referer "^http://.*.yourdomin.com" local_ref
SetEnvIfNoCase Referer ".*.yourdomin.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
<filesmatch ".(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
10. 访问控制
apache的order allow deny
http://www.lishiming.net/thread-832-1-1.html
apache限制某个目录下的php文件没有执行权限 http://www.lishiming.net/thread-1000-1-1.html
apache 针对访问uri 限制ip http://www.lishiming.net/thread-5365-1-1.html
几种限制ip的方法 http://www.lishiming.net/thread-6519-1-1.html
11. apache rewrite相关,后面讲到
apache 限制指定user_agent http://www.lishiming.net/thread-1033-1-1.html
apache 限制某些目录不能访问通过rewrite实现 http://www.lishiming.net/thread-3587-1-1.html
apache rewrite 出现死循环 http://www.lishiming.net/thread-1043-1-1.html
一. php配置
查看配置文件的路径 /usr/local/php/bin/php -i |grep -i config
vi /usr/locall/php/etc/php.ini
查找/disable_function
1. 配置disable_function
disable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close
禁止这些函数,禁止黑客用这些黑客访问
2. 配置error_log
display_error=off 这里如果是on 有助于我们去排错和调试========
log_errors=on
error_log=/usr/local/php/logs/php_errors.log 这里写绝对路径,创建logs目录,权限777
error_reporting = E_ALL & ~E_NOTICE 错误级别
查看网站出错的状态码
curl -I -x127.0.0.1:80 http://www.111.com/forum.php
错误级别参考 http://www.aminglinux.com/bbs/thread-6973-1-1.html
3. 配置open_basedir 限定访问目录
open_basedir = /data/www1:/tmp 在php.ini里面配置,一种方法,指定到别的目录去,就访问不了了
php_admin_value open_basedir "/data/www1:/tmp" 在虚拟主机配置,二种方法,
> /usr/local/php_errors.log 清空日志的意思
4. 安装php的扩展模块(memcache)
http://www.aminglinux.com/bbs/thread-45-1-1.html
源码包的模块
cd /usr/local/src/php-5.3.28/ext/
如果想要用哪些模块,就进入到模块 执行这个命令
ext]# cd ftp
[root@Centos6 ftp]#/usr/local/php/bin/phpize
需要安装autoconf yum install autoconf
然后再执行一下命令/usr/local/php/bin/phpize
ls
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install 这时告诉你这个动态模块在哪里
ls + 模块路径
出现 ftp.so
/usr/local/php/bin/php -i |grep -i extension_dir
vi /usr/local/php/etc/php.ini 配置加上ftp模块,需要手动加
进去加上 extension=ftp.so extension这里说明是一个动态加载
然后 /usr/local/php/bin/php -m |grep ftp 就多了ftp这个模块了
二. mysql配置
mysql调优: http://www.aminglinux.com/bbs/thread-5758-1-1.html
/etc/my.cnf 已经拷贝了这个模板
[mysqld]
socket = /tmp/mysql.sock # 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(Linux下默认是/var/lib/mysql/mysql.sock文件)等我写完后你再读
port = 3306 # 指定MsSQL侦听的端口
key_buffer = 384M # key_buffer是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写)。索引被所有的线程共享,key_buffer的大小视内存大小而定。
table_cache = 512 # 为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。可以避免频繁的打开数据表产生的开销
sort_buffer_size = 2M # 每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。
注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100×6=600MB
read_buffer_size = 2M # 读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。=====
query_cache_size = 32M # 指定MySQL查询结果缓冲区的大小
read_rnd_buffer_size = 8M # 改参数在使用行指针排序之后,随机读用的。
myisam_sort_buffer_size =64M # MyISAM表发生变化时重新排序所需的缓冲
thread_concurrency = 8 # 最大并发线程数,取值为服务器逻辑CPU数量×2,如果CPU支持H.T超线程,再×2
thread_cache = 8 # #缓存可重用的线程数
skip-locking # 避免MySQL的外部锁定,减少出错几率增强稳定性。 wait_timeout = 8 # 表示空闲的连接超时时间,默认是28800s,这个参数是和interactive_timeout一起使用的,也就是说要想让wait_timeout 生效,必须同时设置interactive_timeout
interactive_timeout = 8
long_query_time = 1 ##慢查询日志的超时时间
log_slow_queries = /path/to/slow_queries ## 慢查询日志路径,必须配合上面的参数一同使用
============
查看key_reads / key_read_requests 这两的值
登录mysql
SHOW STATUS LIKE 'key_read%';
--------
show varables like 'table%'
apache 限制指定user_agent http://www.lishiming.net/thread-1033-1-1.html
打开虚拟主机配置文件
判断是用什么搜索引擎
有些user_agent 不是我们想要的,可以通过rewrite功能针对 %{HTTP_USER_AGENT} 来rewirete到404页,从而达到限制某些user_agent的请求。
配置如下
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*bot.* [NC]
RewriteCond %{REQUEST_URI} !^/404*
RewriteRule .* /404.html
</IfModule>
测试curl -xlocalhost:80 www.111.com -I 跳到了404
curl -A "sfjslkfjlsjgssfhsl "-xlocalhost:80 www.111.com -I 这个就不是404了
curl -A "botslkfjlsjgssfhsl "-xlocalhost:80 www.111.com -I 这个是404 因为包含了bot
请注意,你的404.html千万别再跳转到其他页面了,否则很有可能就会死循环了。
其实rewrite到404.html 并不是很好的办法,而apache的rewrite功能有一项就是forbidden ,那就是 F
配置如下
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*bot.* [NC]
RewriteRule .* - [F]
</IfModule>
======================
apache 限制某些目录不能访问通过rewrite实现 http://www.lishiming.net/thread-3587-1-1.html
deny allow肯定是可以实现的,但是这个必须指定准确的目录,如果有很多个目录,但是都包含某个名字,比如
bbs.1.com/1/tmp/123.html
bbs.1.com/2/tmp/123.html
bbs.1.com/3/1/2/tmp/123.html
……
如果有很多,需要逐一去定义Directory 模块,这显然很麻烦,使用rewrite模块的 REQUEST_URI 就可以很容易实现。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^.*/data/* [NC] #data这个目录下的都访问不了
RewriteRule .* - [F]
</IfModule>
访问一下网站,看到很多东西没有出来,按下12,会看到有的文件是403就是限制了这个目录下面的文件了
======================
apache rewrite 出现死循环 http://www.lishiming.net/thread-1043-1-1.html
我的一条规则
RewriteRule ^.* /beian.html [R,L]
复制代码
使用curl测试,没有问题,但是使用浏览器访问时,出现了无限循环。
本来访问的是 www.111.com 结果变成了 www.111.com/111/111/111/.....
虽然在最后加了 [L] 依然不管用,可能apache还是不够智能,一直满足条件就一直去匹配,一直去跳转。最后没招了只能再加一个条件。
RewriteCond %{REQUEST_URI} !^/beian.html [NC]
RewriteRule ^.* /beian.html [R,L]
这样就不再循环了。