Рецепт конфигурации nginx для Drupal
Материал из DiPHOST.Ru wiki system
(Различия между версиями)
Schors (Обсуждение | вклад) (Новая страница: «<meta name="keywords" content="cms, nginx, drupal, статика"></meta> <meta name="description" content="Конфигурация nginx для Drupal"></meta> <m…») |
Schors (Обсуждение | вклад) |
||
(2 промежуточные версии не показаны) | |||
Строка 3: | Строка 3: | ||
<meta name="title" content="Рецепт конфигурации nginx для Drupal"></meta> | <meta name="title" content="Рецепт конфигурации nginx для Drupal"></meta> | ||
- | ==== Рецепт nginx " | + | ==== Рецепт nginx "Drupal" ==== |
+ | [[Cookbook_nginx|Коллекция рецептов nginx нашего хостинга]] | ||
Для обработки статических файлов веб-сервером nginx мы разработали специальную конфигурацию с учётом особенностей [[Drupal]]. | Для обработки статических файлов веб-сервером nginx мы разработали специальную конфигурацию с учётом особенностей [[Drupal]]. | ||
Строка 43: | Строка 44: | ||
# обработать запрос, не соответствующий уточнениям ниже | # обработать запрос, не соответствующий уточнениям ниже | ||
location / { | 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; | ||
} | } | ||
Строка 60: | Строка 73: | ||
location ~ /\.ht { | location ~ /\.ht { | ||
deny all; | 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 | # попытаться отдать файл с одним из расширений напрямую минуя apache | ||
- | location ~* \.( | + | location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { |
access_log /home/username/www/site1/logs/nginx-access.log; | access_log /home/username/www/site1/logs/nginx-access.log; | ||
charset utf-8; | charset utf-8; | ||
source_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; | try_files $uri @apache; | ||
} | } | ||
+ | # запретить все прямые обращения к несуществующим файлам .php | ||
+ | location ~ \.php$ { | ||
+ | try_files $uri =404; | ||
+ | proxy_pass http://127.0.0.1:11111; | ||
+ | } | ||
+ | |||
# передать запрос к apache | # передать запрос к apache | ||
location @apache { | location @apache { |
Текущая версия на 12:23, 1 августа 2012
Рецепт nginx "Drupal"
Коллекция рецептов nginx нашего хостинга
Для обработки статических файлов веб-сервером nginx мы разработали специальную конфигурацию с учётом особенностей Drupal.
Так выглядит конфигурация 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; } }