Nginx 做为web server 的SEO要面
Nginx既可做为web server,也可做为反背proxy,那里先会商做为web server的普通性SEO要面。
常用优化要面
nginx利用的是牢固数目的workers, 每一个worker皆处置进进的恳求。最好理论是每一个CPU内核设置一个worker.
怎样晓得您的体系有几个CPU?
- $ grep ^processor /proc/cpuinfo | wc -l
关于一个四核处置器,设置文件相似:
# One worker per CPU-core.
- worker_processes 4;
- events {
- worker_connections 8096;
- multi_accept on;
- use epoll;
- }
- worker_rlimit_nofile 40000;
- http {
- sendfile on;
- tcp_nopush on;
- tcp_nodelay on;
- keepalive_timeout 15;
- # Your content here ..
- }
那里我们进步了 worker_connections 设置,界说了每一个worker历程能处置几毗连。
效劳器的最年夜毗连数目是:
- worker_processes * worker_connections (= 32384 本例中)
那里启用了 multi_accept,该设置项使nginx能尽快领受尽量多的恳求,削减客户真个毗连初初化工夫。
最初,本例中利用了 epoll 的变乱模子,那也是最好理论倡议。
紧缩
许多用户会启用 gzip紧缩模块,使得返回客户真个内容更简短,传输更快。
可是紧缩会耗损用户效劳器资本,经由过程监控CPU利用率(可接纳开源Hyperic),假如太高,能够思索禁用紧缩。
凡是只紧缩年夜文件,制止紧缩那些紧缩结果欠好的文件,比方图片,可施行文件等两进造文件。
用户可参考上面设置:
- gzip on;
- gzip_vary on;
- gzip_min_length 10240;
- gzip_proxied expired no-cache no-store private auth;
- gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
- gzip_disable "MSIE [1-6]\.";
上里设置,只对文件年夜于10k的文本文件停止紧缩。
客户端缓存
假如客户端(普通是阅读器)以为曾经保留了要下载的最新内容,便没有会背nginx效劳器再收恳求。
那需求做一些缓存设置。最简朴的法子是将一切的图片,js等静态内容设置一个牢固的工夫少度:
- location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
- access_log off;
- log_not_found off;
- expires 30d;
- }
那里我们也禁用了媒体文件的日记,将一些文件后缀文件的过时工夫设置为30天。
文件句柄缓存
假如需求处置年夜量静态文件,需求连结那些文件句柄为翻开形态,制止后绝再次翻开。
上面示例,既可放正在nginx设置的 server 部门,也可放正在主 http 块中。:
- open_file_cache max=2000 inactive=20s;
- open_file_cache_valid 60s;
- open_file_cache_min_uses 5;
- open_file_cache_errors off;
那里设置效劳器最年夜缓存2000个翻开的文件句柄,封闭20秒内无恳求的文件句柄,句柄的有用工夫是60秒,而且只要会见次数超越5次的才会被缓存。那样只缓存频仍会见的文件,低落文件体系的会见。
优化PHP
许多站面利用了PHP,比方drupal, wordpress。
因为nginx出有本人的mod_php,保举的方法是利用 PHP-FPM,需求将恳求转收,比方:
- # execute all .php files via php-fpm
- location ~ .php$ {
- # connect to a unix domain-socket:
- fastcgi_pass unix:/var/run/php5-fpm.sock;
- fastcgi_index index.php;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- fastcgi_param SCRIPT_NAME $fastcgi_script_name;
- fastcgi_buffer_size 128k;
- fastcgi_buffers 256 16k;
- fastcgi_busy_buffers_size 256k;
- fastcgi_temp_file_write_size 256k;
- # This file is present on Debian systems..
- include fastcgi_params;
- }
留意那里利用了 Unix domain-socket 毗连 FPM, 以是需求修正/etc/php5/fpm/pool.d/conf 以下:
- listen = /var/run/php5-fpm.sock
那包管FPM监听一个domain socket,而没有是默许的( "listen=127.0.0.1:9000").
默许的PHP-FPM将启动一些公用的worker,每一个运转一个PHP真例。假如内存充足,能够删减worker数目去提拔并收吞吐量。
编纂文件 /etc/php5/fpm/pool.d/conf,改动数目,比方:
- ; set a fixed number of php workers
- pm = static
- ; start up 12 php processes
- pm.max_children = 12
该值需求按照实践情况调解。调解的根据是利用监控东西所收罗的数据。
最初可设置PHP-FPM主动重启。假如呈现成绩,比方上面的设置是,正在1分钟内十个子历程死失落,便重启,许可历程有十秒落空掌握。
上面是/etc/php5/fpm/php-fpm.conf 中的齐局设置:
- emergency_restart_threshold 10
- emergency_restart_interval
- 1m process_control_timeout 10s
查验
优化设置的结果需求理论查验,倡议布置一个监控东西,监控的内容应包罗:
Nginx:开源版供给的监控目标,唯一以下6个:
Connections,Accepts,Handled,Requests,Writing,Waiting
从操纵体系的角度:应包罗Nginx历程的CPU利用率,内存占用,团体CPU利用率,交流区利用率等目标。
假如是正在实拟机上运转,借应存眷 操纵体系的 ST( Steal Time)目标,判定能否有超卖,过载等征象;
那里保举一个免费开源东西, Hyperic
注:相干网站建立本领浏览请移步到建站教程频讲。
相关信息
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|