配置文件基本参数优化

1.隐藏版本号

【nginx】
nginx.conf配置文件,http标签加入:

server_tokens off

改源码:
src/http/ngx_http_header_filter_module.c
src/http/ngx_http_special_response.c

【apache】
httpd.conf文件添加
Include conf/extra/httpd-default.conf
打开extra/httpd-default.conf模块加入

ServerTokens Prod
ServerSignature Off

2.更默认用户与组

【nginx】
第一种方法:nginx.conf 配置文件
user www www
第二种方法:编译nginx 时增加 
--user=www --group=www

【apache】

3.配置nginx worker进程个数

worker_processes 8;  
或
worker_processes auto;

四核cpu服务器(进程CPU亲和力,分别表示第1.2.3.4颗CUP)
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;

八核cpu服务器(进程CPU亲和力,分别表示第1.2.3.4.5.6.7.8颗CUP)
worker_processes 8;
worker_cpu_affinity 000000001 00000010 00001000 00010000 00100000 01000000 1000000 0100000000;
worker_cpu_affinity 0001 0010 0100 1000;

4.事件处理模型优化

linux一般使用 epoll,IO多路复用模型
events 标签添加

use epool;

5.调整单个进程允许的客户端最大连接数

events 标签添加

worker_connections 20480;

6.配置每个进程最大文件打开数

main 标签添加

worker_rlimit_nofile 20480;

7.优化服务器名字的hash表大小

server 标签添加

server_name  bbs.test.org; 

如果定义了大量名字,或者定义了非常长的名字,那就需要在http配置块中调整
server_names_hash_max_size 和 server_names_hasl_bucket_size 的值。
server_names_hash_bucket_size的默认值可能是32,或者是64,或者是其他值,取决于CPU 的缓存行的长度。
如果这个值是32,那么定义“too.long.server.name.nginx.org”作为虚拟主名就会失败,

8.开高效文件传输模式

server、http、localhost 标签均可添加

sendfile on;

开启文件高效传输模式e同时将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络及磁盘I/0阻塞。

9.设置连接超时时间

server、http、localhost 标签均可添加

keepalive_timeout 60;
tcp_nodelay on;
client_header_timeout 15;
client_body_timeout 15;
send_timeout 25;

10.上传文件大小限制(动态应用)

server、http、localhost 标签均可添加
server、http、localhost 标签均可添加
client_max_body_size 10m;

11.FastCGI相关参数调优(配合PHP引擎动态服务)

conf/fcastcgi.conf  包含一些变量与参数
server、http、localhost 标签均可添加

fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
fastcgi_cache test_nginx;
fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;
fastcgi_cache_valid 301 1d;
fastcgi_cache_min_uses 1;
include 第21条

12.Nginx gzip 压缩性能优化

【nginx】
server、http、localhost 标签均可添加

gzip on;
gzip_min_length 1k;
gzip_buffers 4 32k;
gzip_http_version 1.1;
gzip_comp_level 9;
gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
gzip_vary on;

conf/mime.types 文件类型

【apache】
1、以 DSO 动态模块加载 mod_deflate 配置的全部命令为:
cd /home/oldboy/tools/httpd-2.2.27/modules/filters/
<==切到 apache 软件目录 mod_deflate 程序下。
/application/apache/bin/apxs -c -i -a mod_deflate.c
<==以 dso 的方式编译入到 apache 中。
ll /application/apache/modules/mod_deflate.so
<==检查 mod_deflate

httpd.conf配置文件增加
 DeflateCompressionLevel 9
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/plain text/xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/css

13.expires 缓存性能优化

【nginx】
location URL规则将需要缓存的扩展名列出来然后指定缓存时间

expires 3650d

【apache】
ExpiresActive on
ExpiresDefault "access plus 12 month"
ExpiresByType text/html "access plus 12 months"
ExpiresByType text/css "access plus 12 months"
ExpiresByType image/gif "access plus 12 months"
ExpiresByType image/jpeg "access plus 12 months"
ExpiresByType image/jpg "access plus 12 months"
ExpiresByType image/png "access plus 12 months"
EXpiresByType application/x-shockwave-flash "access plus 12 months"
EXpiresByType application/x-javascript "access plus 12 months"
ExpiresByType video/x-flv "access plus 12 months"

14.nginx 防爬虫处理

方法一:修改nginx.conf,禁止网络爬虫的ua,返回403。

if ($http_user_agent ~* "Baiduspider|Googlebot|Tomato Bot") 
{ 
return 403; 
} 

方法2:网站更目录下增加Robots.txt,放在站点根目录下。
在http://tool.chinaz.com/robots/站点可以针对现在的搜索引擎按照想要的规则生成robots.txt文件。

15.nginx 实现日志轮询

https://www.qinzc.me/post-89.html

16.不记录不需要的访问日志

【nginx】
location ~ .*\.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF)$ {
access_log off;
}

【apache】
<FilesMatch "\.(css|js|gif|jpg|ico|swf)">
SetEnv IMAG 1
</FilesMatch>

找到配置日志的地方
CustomLog "|/usr/local/sbin/cronolog /app/logs/%Y/%m/access_%Y%m%d.log" combined env=!IM
AG
CustomLog "|/usr/local/sbin/cronolog /app/logs/%Y/%m/%d/access_%Y%m%d%H.log" combined en
v=!IMAG

假如日志目录为/app;logs 则授权方法
chown -R root.root /app/logs
chmou -R 700 /app/logs

17.最小化web目录及文件权限设置

所有站点目录用户和组应该为root,所有目录权限755,所有文件权限644

18.站点目录及文件URL访问控制

location ~ ^/images/.*\.(php|php5)$
{
deny all;
}
location ~ ^/static/.*\.(php|php5)$
{
deny all;
}
location ~* ^/data/(attachment|avatar)/.*\.(php|php5)$
{
deny all;
}

18.限制来源IP访问

location ~ ^/oldboy/ {
allow 202.111.12.211;
deny all;
}
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
deny all;
}

19.优雅访问页面

error_page 403 /403.html

20.使用tmpsf文件系统替代频发访问的目录

先移走,挂载后,再移回来

mount -t tmpfs -o size=200m tmpfs /tmp

也可以加入ftab
tmpfs     /tmp    tmpfs    size=200m  0 0

21.proxy.conf 参数优化

proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 50m;
client_body_buffer_size 256k;
proxy_connect_timeout 30;
proxy_send_timeout 30;
proxy_read_timeout 60;
 
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 128m;
proxy_store on;
proxy_store_access   user:rw  group:rw  all:r;
#proxy_temp_path      /dev/shm/nginx_proxy;
#proxy_temp_path       /data2/nginx_cache;

22.Apache worker/perfork模式说明及优化

查看当前编译的模式
/application/apache/bin/apachectl -l|grep "worker|perfork"
/application/apache/bin/apachectl -V

特别说明:
如果显式声明了 ServerLimit,那么它乘以ThreadsPerChild的值必须大于等于 MaxClients,
而且MaxClClients必须是ThreadsPerChild的整数倍,否则Apache将会自动调节
数学表达: 
MaxClient <= 总的进程数(Servei Limit)* 线程数(ThreadsPerChill)

MaxClient % ThreadsPerChild = 0 

并发连接数查看
psterr -a|grep http|wc -l


23.Web服务资源防盗链

方法1:referer 阻止,http协议 头中一个字段
方法2:cookie 处理
方法3:通过加密变换访问路径实现防盗链,lighttpd 有类似的插件,mod_secdownload


LAMP 系统性能调优,第 1 部分

http://www.ibm.com/developerworks/cn/linux/l-tune-lamp-1

LAMP 系统性能调优,第 2 部分

https://www.ibm.com/developerworks/cn/linux/l-tune-lamp-2.html

LAMP 系统性能调优,第 3 部分

https://www.ibm.com/developerworks/cn/linux/l-tune-lamp-3.html