Данный пример конфига является примером некоторых конструкций и параметров настройки Nginx-а.
# конфигурация nginx для гипотетического пользователя хостинга username для сайта номер "один"
#
# параметр listen и proxy_pass генерируется системой автоматически по внутренним параметрам
server {
listen 192.168.0.1:80; # IP-адрес сервера
proxy_buffer_size 8k; # параметр изменяется в панели управления
client_max_body_size 16m; # параметр изменяется в панели управления
client_body_buffer_size 512k;
# кэш имён файлов для disable_symlinks
open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
# имена сайта
server_name example.com;
server_name www.example.com
# отключение лишних журналов
access_log off;
log_not_found off;
# корневая папка для статических файлов
root /home/username/www/site1/public_html;
index index.html;
# запрет символьных ссылок на "чужие" файлы
# если файл находится внутри папки /home/username/www/site1/public_html ,
# то эту часть не проверять по соображением производительности
disable_symlinks if_not_owner from=/home/username/www/site1/public_html;
# обработать запрос, не соответствующий уточнениям ниже
location / {
access_log /home/username/www/site1/logs/nginx-access.log;
charset utf-8;
source_charset utf-8;
try_files $uri @apache;
}
# запретить махинации с php
location ~ \..*/.*\.php$ {
return 403;
}
# запретить доступ к резервным копиям извне
location = /backup {
deny all;
}
# запретить доступ к файлам репозиториев, если они случайно оказались в публичном месте
location ~ /\.svn {
deny all;
}
location ~ /\.git {
deny all;
}
location ~ /\.hg {
deny all;
}
# запретить доступ к файлам .htaccess и .htpasswd
location ~ /\.ht {
deny all;
}
# отдать напрямую favicon.ico
location = /favicon.ico {
access_log /home/username/www/site1/logs/nginx-access.log;
}
# отдать напрямую robots.txt
location = /robots.txt {
allow all;
access_log /home/username/www/site1/logs/nginx-access.log;
}
# попытаться отдать файл с одним из расширений напрямую минуя apache
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
access_log /home/username/www/site1/logs/nginx-access.log;
charset utf-8;
source_charset utf-8;
expires 24h;
}
# попытаться отдать кэш изображений напрямую
location ~ ^/sites/.*/files/imagecache/ {
try_files $uri @apache;
}
# попытаться отдать стили напрямую
location ~ ^/sites/.*/files/styles/ {
try_files $uri @apache;
}
# запретить все прямые обращения к несуществующим файлам .php
location ~ \.php$ {
try_files $uri =404;
proxy_pass http://127.0.0.1:11111;
}
# передать запрос к apache
location @apache {
proxy_pass http://127.0.0.1:11111;
}
}