Вот и пришло время.. отказываемся от Apache! Хотя совсем пока рано, Nginx еще в процессе создания и рано говорить о том, что он может предложить все что нам нужно..
Сделав у себя и получив то самое, ради чего все это затевалось.. или получив приблизительно то что ожидал (если зарядить Nginx всем необходимым.. то памяти он кушает столько же — сколько и Apache, единственное что хорошо — это быстро обрабатывает запросы..) — решил поделиться с вами реально работающим конфигом Nginx (как всегда нагуглил, но и некоторые добавления от «шефа» присутствуют 😉 )
server {
listen 80;
server_name testdomain.ru *.testdomain.ru;error_log /path-to-nginx-log/../testdomain.error.log;
access_log /path-to-nginx-log/../testdomain.access.log; // придется включить если используете системы типа awstats (учет посещений)
# Отдаем статику и разрешаем ее кешировать на 14 дней (когда дизайн будет окончательно закончен — сделайте 30 дней 😉 )
location ~* ^.+\.(jpg|png|gif|ico|jpeg|mid|wav)$
{
root /path-to-web-site-root;
index index.php
rewrite ^.*/files/(.*) /wp-content/blogs.php?file=$1 last;
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php?q=$1 last;
rewrite ^ /index.php break;
}
expires 14d;
}
# Правило для всего остального
location /
{
gzip on;
gzip_http_version 1.0;
gzip_vary on;
gzip_comp_level 5; // степень сжатия определяется нагрузкой на сервер.. если она высока — лучше снизить степень для экономии ресурсов
gzip_proxied any;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_buffers 16 8k;root /path-to-web-site-root;
index index.php;
# rewrite для файлов блогов
rewrite ^.*/files/(.*) /wp-content/blogs.php?file=$1 last;
# WP Super Cache
set $supercache_file »;
set $supercache_uri $request_uri;if ($request_method = POST) {
set $supercache_uri »;
}# Using pretty permalinks, so bypass the cache for any query string
if ($query_string) {
set $supercache_uri »;
}if ($http_cookie ~* «comment_author_|wordpress|wp-postpass_» ) {
set $supercache_uri »;
}# if we haven’t bypassed the cache, specify our supercache file
if ($supercache_uri ~ ^(.+)$) {
set $supercache_file /wp-content/cache/supercache/$http_host/$1index.html;
}# only rewrite to the supercache file if it actually exists
if (-f $document_root$supercache_file) {
rewrite ^(.*)$ $supercache_file break;
}
# Правила для BBPress
if (!-e $request_filename) {
rewrite ^/forums/topic/(.*)$ /forums/topic.php last;
rewrite ^/forums/forum/(.*)$ /forums/forum.php last;
rewrite ^/forums/profile/(.*)$ /forums/profile.php last;
rewrite ^/forums/view/(.*)$ /forums/view.php last;
rewrite ^/forums/tags/(.*)$ /forums/tags.php last;
rewrite ^/forums/rss/(.*)$ /forums/rss.php last;
rewrite ^/forums/bb-admin/ /forums/bb-admin/index.php last;
rewrite ^/forums/ /forums/index.php last;
}
if (!-e $request_filename) {
rewrite ^.+?/?(/wp-.*) $1 last;
rewrite ^.+?/?(/.*\.php)$ $1 last;
rewrite ^(.+)$ /index.php?q=$1 last;
}
error_page 404 = /index.php?q=$uri;
}
# Отправляем php на выполнение в FastCGI server
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /path-to-web-site-root$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache’s document root concurs with nginx’s one
location ~ /\.ht {
deny all;
}
}
Отдельное спасибо автору оригинального конфига — johnnytee, а началось все с этой заметки
Если возникнут вопросы — готов ответить 🙂 А если предложите свои «хаки» — буду только рад!
Посмотрите о других настройках:
Делаем веб сервер крепким и производительным! Начало..
Делаем веб сервер крепким и производительным! Часть 2 – Защита
Небольшое дополнение — конфигурация при использовании Apache в роли backend-а отличается от этой..
CMS