r.stefanov
Well-Known Member
Тази конфигурация е изключително подходяща за сайтове с много трафик върху VPS-и с малко ресурси или стар хардуер. Дори екипа на Wordpress има статии за това как Nginx превъзхожда многократно Apache в доста отношения и как никой друг сървър не е успял да обслужи 15000 request-a (не бенчмарк). Разбира се първо взимайте в предвид какво и как искате да го постигнете преди да давате коментари. Почти всичко, което може Apache го може и Nginx. Сигурен съм, че съвсем скоро ще са рамо до рамо по отношение features. Да се надяваме, че все повече хора ще се престрашат да го пробват
За повече информация се консултирайте със съответната документация в /usr/share/doc*, http://nginx.org/en/docs и http://php.net/manual/en/install.fpm.php
Предимства? Освен производителността, спестявате си не малка част от главоболията с .htaccess и дупките свързани с платформата. Никога, повтарям НИКОГА не давайте права на сървъра да променя файлове или директории в Wordpress. Дори групата не е нужно да има друго освен read. Собственик на файловете е юзера. Permissions трябва да са 755 за директории и 644 за файловете (ако е възможно и по-ограничени). Аз лично ги свалям възможно най-много и след това вдигам ако нещо не работи.
Tip: отбягвайте IF - if is evil!
To do: APC и memcache
nginx.conf
server block за blabla.conf
pool в php-fpm.conf - с конфа на php-fpm все още не съм си играл много, тук експериментирайте с подходящи стойности за вашите нужди
За повече информация се консултирайте със съответната документация в /usr/share/doc*, http://nginx.org/en/docs и http://php.net/manual/en/install.fpm.php
Предимства? Освен производителността, спестявате си не малка част от главоболията с .htaccess и дупките свързани с платформата. Никога, повтарям НИКОГА не давайте права на сървъра да променя файлове или директории в Wordpress. Дори групата не е нужно да има друго освен read. Собственик на файловете е юзера. Permissions трябва да са 755 за директории и 644 за файловете (ако е възможно и по-ограничени). Аз лично ги свалям възможно най-много и след това вдигам ако нещо не работи.
Tip: отбягвайте IF - if is evil!
To do: APC и memcache
nginx.conf
Код:
user user group; # юзер-а и групата за nginx
worker_processes 1;
error_log /var/log/nginx/error_log info;
events {
worker_connections 1024;
use epoll;
}
http {
limit_conn_zone $binary_remote_addr zone=phplimit:1m;
#error_page 403 /път/до/файла.html; ако имате custom страници за грешките
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main
'$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
client_header_timeout 10m;
client_body_timeout 10m;
send_timeout 10m;
connection_pool_size 256;
client_header_buffer_size 1k;
large_client_header_buffers 4 2k;
request_pool_size 4k;
gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain;
output_buffers 1 32k;
postpone_output 1460;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 20 10;
ignore_invalid_headers on;
server {
server_name blabla.com www.blabla.com;
root /var/www/blabla/p_html;
index index.php;
include /etc/nginx/sites/blabla.com.conf;
}
}
server block за blabla.conf
Код:
rewrite ^/sitemap_index\.xml$ /index.php?sitemap=1 last;
rewrite ^/([^/]+?)-sitemap([0-9]+)?\.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;
access_log /var/log/nginx/blabla.access_log main;
error_log /var/log/nginx/blabla.error_log info;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
location ~ /\. { access_log off; log_not_found off; deny all; }
location ~ ~$ { access_log off; log_not_found off; deny all; }
location ~* wp-admin/includes { deny all; }
location ~* wp-includes/theme-compat/ { deny all; }
location ~* wp-includes/js/tinymce/langs/.*\.php { deny all; }
location /wp-content/ { internal; }
location /wp-includes/ { internal; }
location ~* ^/wp-content/uploads/.*.(html|htm|shtml|php)$ {
types { }
default_type text/plain;
}
location /wp-content/uploads {
deny all;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
location /wp-admin {
allow *.*.*.*; #IP адрес за достъп до wp-admin/*
deny all;
}
location ~* ^/wp-login.php$ {
allow 158.58.216.11; #IP адрес за достъп до wp-login.php
deny all;
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass 127.0.0.1:9000; #свободен порт, може да използвате и unix socket
}
location ~ \.php$ {
include fastcgi.conf;
fastcgi_intercept_errors on;
limit_conn phplimit 5;
fastcgi_pass 127.0.0.1:9000; #свободен порт, може да използвате и unix socket
}
pool в php-fpm.conf - с конфа на php-fpm все още не съм си играл много, тук експериментирайте с подходящи стойности за вашите нужди
Код:
[blabla]
listen = 127.0.0.1:9000 ;свободен порт
user = user ;юзер-а който е собственик (owner) на файловете за Wordpress
group = users ;група
pm = dynamic
pm.max_children = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 2
Последно редактирано: