Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:nginx-phpfpm [2015/06/01 03:31] [Для сайта на основе Wordpress] |
wiki:nginx-phpfpm [2015/06/01 04:04] (текущий) Ссылки |
||
---|---|---|---|
Строка 85: | Строка 85: | ||
<code bash>sudo nano /etc/nginx/common/upstream</code> | <code bash>sudo nano /etc/nginx/common/upstream</code> | ||
и добавим в него строчки | и добавим в него строчки | ||
- | <code> | + | <code=php> |
upstream php-fpm | upstream php-fpm | ||
{ | { | ||
Строка 95: | Строка 95: | ||
Редактируем файл «/etc/nginx/sites-available/example.com». Добавляем строчку | Редактируем файл «/etc/nginx/sites-available/example.com». Добавляем строчку | ||
- | <code> | + | <code=php> |
include common/upstream; | include common/upstream; | ||
</code> | </code> | ||
Строка 101: | Строка 101: | ||
Далее описываем перенаправление от HTTP к HTTPS, если, конечно, это планируется. В таком случае необходимо наличие сертификатов для HTTPS (см. [[wiki:руководство_по_ubuntu_server:безопасность:certificates|Сертификаты]]) | Далее описываем перенаправление от HTTP к HTTPS, если, конечно, это планируется. В таком случае необходимо наличие сертификатов для HTTPS (см. [[wiki:руководство_по_ubuntu_server:безопасность:certificates|Сертификаты]]) | ||
- | <code> | + | <code=php> |
server | server | ||
{ | { | ||
Строка 112: | Строка 112: | ||
Начинаем описывать конфигурацию сайта | Начинаем описывать конфигурацию сайта | ||
- | <code> | + | <code=php> |
server | server | ||
{ | { | ||
Строка 118: | Строка 118: | ||
Сетевой порт для приема соединений: 80 — обычный HTTP; 443 — HTTPS (см. выше) | Сетевой порт для приема соединений: 80 — обычный HTTP; 443 — HTTPS (см. выше) | ||
- | <code> | + | <code=php> |
# Порты | # Порты | ||
listen 80; | listen 80; | ||
Строка 124: | Строка 124: | ||
</code> | </code> | ||
Корневая директория сайта работающего на данном сервере | Корневая директория сайта работающего на данном сервере | ||
- | <code> | + | <code=php> |
root /var/www; | root /var/www; | ||
</code> | </code> | ||
Возможные имена индексных файлов (их «Nginx» пытается открыть если он получил запрос вида «example.com/», вместо явного «example.com/index.html») | Возможные имена индексных файлов (их «Nginx» пытается открыть если он получил запрос вида «example.com/», вместо явного «example.com/index.html») | ||
- | <code> | + | <code=php> |
index index.php index.html index.htm; | index index.php index.html index.htm; | ||
</code> | </code> | ||
Имя сервера -- обычно доменное имя Вашего сервера | Имя сервера -- обычно доменное имя Вашего сервера | ||
- | <code> | + | <code=php> |
server_name example.com www.example.com; | server_name example.com www.example.com; | ||
</code> | </code> | ||
- | ==== Настройка шифрования SSL ==== | + | ==== Шифрование ==== |
Необходимо наличие сертификата «*.crt» или «*.pem» и приватного секретного ключа «*.key» (см. [[wiki:руководство_по_ubuntu_server:безопасность:certificates|Сертификаты]]). Самоподписанный сертификат можно сгенерировать командой в терминале (см. [[http://manpages.ubuntu.com/manpages/lucid/man1/openssl.1ssl.html|man openssl]], [[http://manpages.ubuntu.com/manpages/precise/man1/req.1ssl.html|man req]]) | Необходимо наличие сертификата «*.crt» или «*.pem» и приватного секретного ключа «*.key» (см. [[wiki:руководство_по_ubuntu_server:безопасность:certificates|Сертификаты]]). Самоподписанный сертификат можно сгенерировать командой в терминале (см. [[http://manpages.ubuntu.com/manpages/lucid/man1/openssl.1ssl.html|man openssl]], [[http://manpages.ubuntu.com/manpages/precise/man1/req.1ssl.html|man req]]) | ||
Строка 178: | Строка 178: | ||
Файлы сертификатов для «HTTPS» | Файлы сертификатов для «HTTPS» | ||
- | <code> | + | <code=php> |
ssl_certificate /etc/ssl/certs/example.com_nginx.crt; # сертификат (можно свободно распространять) | ssl_certificate /etc/ssl/certs/example.com_nginx.crt; # сертификат (можно свободно распространять) | ||
ssl_certificate_key /etc/ssl/private/example.com_nginx.key; # приватный ключ (секретный файл - НИКОМУ НЕ ПОКАЗЫВАТЬ) | ssl_certificate_key /etc/ssl/private/example.com_nginx.key; # приватный ключ (секретный файл - НИКОМУ НЕ ПОКАЗЫВАТЬ) | ||
</code> | </code> | ||
Дополнительные параметры требуемые для «HTTPS» | Дополнительные параметры требуемые для «HTTPS» | ||
- | <code> | + | <code=php> |
ssl_dhparam /etc/ssl/private/example.com_nginx.dh.key; # писать эту строчку только если файл есть | ssl_dhparam /etc/ssl/private/example.com_nginx.dh.key; # писать эту строчку только если файл есть | ||
ssl_session_timeout 20m; # время 20 минут | ssl_session_timeout 20m; # время 20 минут | ||
Строка 194: | Строка 194: | ||
Продолжаем редактировать файл «/etc/nginx/sites-available/example.com». Подгружаем созданный выше конфигурационный файл с описанием настроек SSL | Продолжаем редактировать файл «/etc/nginx/sites-available/example.com». Подгружаем созданный выше конфигурационный файл с описанием настроек SSL | ||
- | <code> | + | <code=php> |
# Настройка шифрования SSL | # Настройка шифрования SSL | ||
include common/ssl; | include common/ssl; | ||
</code> | </code> | ||
- | ==== Различные настройки ==== | + | ==== Прочие настройки ==== |
Указание максимального размера запроса -- необходимо если сервер будет использоваться для загрузки больших файлов (например, для построения небольшого облачного хранилища на основе «ownCloud», эта строчка по сути делает то же что и указанные выше при настройке «PHP-FPM», только теперь для «Nginx») | Указание максимального размера запроса -- необходимо если сервер будет использоваться для загрузки больших файлов (например, для построения небольшого облачного хранилища на основе «ownCloud», эта строчка по сути делает то же что и указанные выше при настройке «PHP-FPM», только теперь для «Nginx») | ||
- | <code> | + | <code=php> |
client_max_body_size 200m; # увеличение максимального объема файла для загрузки до 200МБ | client_max_body_size 200m; # увеличение максимального объема файла для загрузки до 200МБ | ||
</code> | </code> | ||
Ещё одна опция | Ещё одна опция | ||
- | <code> # Buffers | + | <code=php> # Buffers |
fastcgi_buffers 64 4K; | fastcgi_buffers 64 4K; | ||
</code> | </code> | ||
- | ==== Настройки безопасности ==== | + | ==== Безопасность ==== |
Опишем настройки безопасности в отдельном файле | Опишем настройки безопасности в отдельном файле | ||
<code=bash>sudo touch /etc/nginx/common/security | <code=bash>sudo touch /etc/nginx/common/security | ||
Строка 217: | Строка 217: | ||
И укажем в нём | И укажем в нём | ||
- | <code> | + | <code=php> |
add_header X-Frame-Options "SAMEORIGIN"; | add_header X-Frame-Options "SAMEORIGIN"; | ||
add_header X-Content-Type-Options "nosniff"; | add_header X-Content-Type-Options "nosniff"; | ||
Строка 223: | Строка 223: | ||
Сохраним и закроем файл, а затем подключим его строкой | Сохраним и закроем файл, а затем подключим его строкой | ||
- | <code> | + | <code=php> |
include common/security; | include common/security; | ||
</code> | </code> | ||
Строка 236: | Строка 236: | ||
и введём | и введём | ||
- | <code>gzip on; | + | <code=php>gzip on; |
gzip_disable "msie6"; | gzip_disable "msie6"; | ||
gzip_comp_level 6; | gzip_comp_level 6; | ||
Строка 246: | Строка 246: | ||
Следует сохранить, закрыть и затем подключить этот файл срочкой | Следует сохранить, закрыть и затем подключить этот файл срочкой | ||
- | <code> | + | <code=php> |
include common/gzip; | include common/gzip; | ||
</code> | </code> | ||
- | ==== Описание директорий сайта ==== | + | ==== Директории сайта ==== |
Далее указание директорий сайта и правил работы с ними с использованием директив «location». Данная директива может обрабатывать регулярные выражения «Perl» (см. [[http://www.opennet.ru/docs/RUS/perl-maslov/re.html|Регулярные выражения (шаблоны)]]) | Далее указание директорий сайта и правил работы с ними с использованием директив «location». Данная директива может обрабатывать регулярные выражения «Perl» (см. [[http://www.opennet.ru/docs/RUS/perl-maslov/re.html|Регулярные выражения (шаблоны)]]) | ||
Строка 259: | Строка 259: | ||
Корневая директория | Корневая директория | ||
- | <code> | + | <code=php> |
location "/" | location "/" | ||
{ | { | ||
Строка 267: | Строка 267: | ||
</code> | </code> | ||
К примеру, если хочется построить сайт на основе «WordPress», то можно описать корневую директорию так | К примеру, если хочется построить сайт на основе «WordPress», то можно описать корневую директорию так | ||
- | <code> | + | <code=php> |
location "/" | location "/" | ||
{ | { | ||
Строка 278: | Строка 278: | ||
Директории можно описывать по одной в этом же файле, но это не удобно и не наглядно. А можно указать строчку | Директории можно описывать по одной в этом же файле, но это не удобно и не наглядно. А можно указать строчку | ||
- | <code> include common/locations/*.inc;</code> | + | <code=php> include common/locations/*.inc;</code> |
которая укажет «Nginx», что нужно подключить все файлы в директории «/etc/common/locations/» которые соответствуют шаблону «*.inc», таким образом, если один из файлов нужно будет временно отключить, то его можно просто переименовать убрав расширение в имени. Создадим директорию где будут хранится эти файлы | которая укажет «Nginx», что нужно подключить все файлы в директории «/etc/common/locations/» которые соответствуют шаблону «*.inc», таким образом, если один из файлов нужно будет временно отключить, то его можно просто переименовать убрав расширение в имени. Создадим директорию где будут хранится эти файлы | ||
<code=bash>sudo mkdir /etc/nginx/common/locations</code> | <code=bash>sudo mkdir /etc/nginx/common/locations</code> | ||
Строка 286: | Строка 286: | ||
sudo nano /etc/nginx/common/locations/restricted.inc</code> | sudo nano /etc/nginx/common/locations/restricted.inc</code> | ||
со строчками | со строчками | ||
- | <code> | + | <code=php> |
location ^~ "/restricted/" | location ^~ "/restricted/" | ||
{ | { | ||
Строка 300: | Строка 300: | ||
Этот конфигурационный файл подключится автоматически, за счёт шаблона (см. выше). | Этот конфигурационный файл подключится автоматически, за счёт шаблона (см. выше). | ||
- | ==== Для сайта на основе Wordpress ==== | + | ==== Wordpress ==== |
Для более полной информации по настройке «Nginx» для «WordPress» следует обратиться к официальной документации (см. [[http://codex.wordpress.org/Nginx|codex.wordpress.org/Nginx]] и [[http://wiki.nginx.org/WordPress|wiki.nginx.org/WordPress]]) | Для более полной информации по настройке «Nginx» для «WordPress» следует обратиться к официальной документации (см. [[http://codex.wordpress.org/Nginx|codex.wordpress.org/Nginx]] и [[http://wiki.nginx.org/WordPress|wiki.nginx.org/WordPress]]) | ||
Натройки «Wordpress», который, в данном примере, находится в папке «/var/www/wordpress» будут описаны в файле «/etc/nginx/common/locations/wordpress.inc» | Натройки «Wordpress», который, в данном примере, находится в папке «/var/www/wordpress» будут описаны в файле «/etc/nginx/common/locations/wordpress.inc» | ||
- | <code>sudo touch /etc/nginx/common/locations/wordpress.inc | + | <code=bash>sudo touch /etc/nginx/common/locations/wordpress.inc |
sudo nano /etc/nginx/common/locations/wordpress.inc</code> | sudo nano /etc/nginx/common/locations/wordpress.inc</code> | ||
Указываем виртуальную директорию (используется для удобства и читабельности) в которую будут перенаправляться запросы при необходимости | Указываем виртуальную директорию (используется для удобства и читабельности) в которую будут перенаправляться запросы при необходимости | ||
Строка 348: | Строка 348: | ||
Сохраняем и закрываем этот файл. Опять же, он будет подключён автоматически. | Сохраняем и закрываем этот файл. Опять же, он будет подключён автоматически. | ||
- | ==== Для облачного хранилища на основе ownCloud ==== | + | ==== ownCloud ==== |
Для наиболее полной информации следует обратится к официальному руководству «OwnCloud» (см. [[https://doc.owncloud.org/server/8.0/admin_manual/installation/nginx_configuration.html|Nginx Configuration]]). К примеру, «ownCloud» находится в папке «/var/www/owncloud». | Для наиболее полной информации следует обратится к официальному руководству «OwnCloud» (см. [[https://doc.owncloud.org/server/8.0/admin_manual/installation/nginx_configuration.html|Nginx Configuration]]). К примеру, «ownCloud» находится в папке «/var/www/owncloud». | ||
Создадим файл настроек для «ownCloud» и отредактируем его | Создадим файл настроек для «ownCloud» и отредактируем его | ||
- | <code>sudo touch /etc/nginx/common/locations/owncloud.inc | + | <code=bash>sudo touch /etc/nginx/common/locations/owncloud.inc |
sudo nano /etc/nginx/common/locations/owncloud.inc</code> | sudo nano /etc/nginx/common/locations/owncloud.inc</code> | ||
Многое аналогично примеру для «Wordpress» | Многое аналогично примеру для «Wordpress» | ||
Строка 390: | Строка 390: | ||
post_max_size=513M</code> | post_max_size=513M</code> | ||
и поменять значения на требуемые. | и поменять значения на требуемые. | ||
- | ==== Базовые ограничения доступа ==== | + | ==== Базовые ограничения ==== |
- | Далее идет запрет доступа к определенным каталогам, подкаталогам и файлам сайта (или «CMS», на основе которых он построен). Опишем это в конфигурационном файле «/etc/nginx/common/locations/deny» | + | Выше была написана строчка для подключение файла «/etc/nginx/common/deny» |
- | <code>sudo touch /etc/nginx/common/locations/deny | + | <code=php>include common/deny;</code> |
- | sudo nano /etc/nginx/common/locations/deny</code> | + | рассмотрим его содержание. В нём идет запрет доступа к некоторым стандартным файлам. Создадим этот файл |
- | <code># Ограничение доступа к разным файлам и папкам которые часто используются для хранения важной информации | + | <code=bash>sudo touch /etc/nginx/common/deny |
- | location ~* "/(engine|inc|data|conf|config|bin|info|install|module|profile|theme)((/.*)?)$" | + | sudo nano /etc/nginx/common/deny</code> |
- | { | + | с содержанием |
- | deny all; | + | <code=php># Запрет доступа к .htaccess и .htpasswd файлам |
- | return 404; | + | |
- | } | + | |
- | + | ||
- | # Запрет доступа к .htaccess и .htpasswd файлам | + | |
location ~* "/\.(htaccess|htpasswd)$" | location ~* "/\.(htaccess|htpasswd)$" | ||
{ | { | ||
Строка 410: | Строка 406: | ||
</code> | </code> | ||
- | <note important>Следует быть бдительным, неверно указанный шаблон здесь может сильно навредить, возможно лучше не дописывать эти директивы или указать их в конце, так как они имеют высокий приоритет. Например, с приведенным выше шаблоном блокировки, станет невозможна загрузка и скачивание с сервера файлов системы контроля версий «Mercurial», которые содержат папку с именем «data» подпадающую под данный шаблон. Ситуация усугубится если использовать «ownCloud» и «ownCloud Client», который попытается загрузить эти файлы на сервер, но потом их не найдёт, и в конце концов просто удалит их в источнике, что фактически приведет к потере файлов</note> | + | <note important>Следует быть бдительным, неверно указанный шаблоны для запрета доступа (не только здесь но и в примерах выше) могут сильно навредить. Например, клиент ownCloud может начать удалять файлы которые не сможет загрузить на сервер из-за неправильного запрета где-то в конфигурационном файле</note> |
Следует переписать все файлы «.htaccess» в директивы «Nginx». Найти эти файлы среди файлов сайта можно, например, командой | Следует переписать все файлы «.htaccess» в директивы «Nginx». Найти эти файлы среди файлов сайта можно, например, командой | ||
- | <code bash>sudo find /var/www/ -name .htaccess</code> | + | <code=bash>sudo find /var/www/ -name .htaccess</code> |
- | Подключаем этот конфигурационный файл строчкой | + | ==== Вызов PHP-FPM ==== |
- | <code>include common/locations/deny;</code> | + | |
- | в файле «/etc/nginx/sites-available/example.com». | + | |
- | На этом описание директорий завершено | + | В примерах выше использовался файл «/etc/nginx/common/php-fpm» — в нём идет перенаправление обработки php-скриптов внутреннему серверу «PHP-FPM» |
- | + | ||
- | ==== Перенаправление обработки php-скриптов внутреннему серверу «PHP-FPM» ==== | + | |
- | + | ||
- | Далее идет перенаправление обработки php-скриптов внутреннему серверу «PHP-FPM» | + | |
<note important> | <note important> | ||
Строка 429: | Строка 419: | ||
Также, в файле "/etc/php5/fpm/pool.d/www.conf" должно присутствовать ограничение на разширение имени | Также, в файле "/etc/php5/fpm/pool.d/www.conf" должно присутствовать ограничение на разширение имени | ||
исполняемых скриптов - "security.limit_extensions = .php .php3 .php4 .php5"</note> | исполняемых скриптов - "security.limit_extensions = .php .php3 .php4 .php5"</note> | ||
- | <note>Очень желательно в шаблоне указать явно где разрешено выполнение скриптов</note> | ||
- | <note>Важно следить что-бы выполнение скриптов не происходило в папках куда их можно свободно загрузить (например, если папка доступна одновременно FTP и HTTP серверу)</note> | ||
- | |||
- | Добавляем в файл «/etc/nginx/sites-available/example.com» строчки, к примеру | ||
- | <code> | ||
- | # Направление PHP-скрипта для обработки FastCGI или PHP-FPM серверу | ||
- | location ~ "^(/index\.php|/info\.php|/(wordpress|owncloud)/.+?\.php)(/.*)?$" | ||
- | { | ||
- | # Решение проблемы с уязвимостью (см. http://forum.nginx.org/read.php?2,88845,page=3) | ||
- | # Не будет работать (ошибка 404) если файлы хранятся на другом сервере | ||
- | try_files $1 $uri $uri/ $uri/index.php?q=$uri&$args $uri/index.php =404; | ||
- | </code> | ||
- | где «$1» -- отсылка к 1-й скобке регулярного выражения в директиве «location …» и т.д. | ||
- | Создаём файл с описанием настроек перенаправления к «PHP-FPM» | + | Создаём этот файл |
- | <code>sudo touch /etc/nginx/common/php-fpm | + | <code=bash>sudo touch /etc/nginx/common/php-fpm |
sudo nano /etc/nginx/common/php-fpm</code> | sudo nano /etc/nginx/common/php-fpm</code> | ||
- | И в него добавляем строчки | + | с содержанием |
- | <code> | + | <code=php> |
# Настройки порта или сокета PHP-FPM производятся в файле "/etc/php5/fpm/pool.d/www.conf" | # Настройки порта или сокета PHP-FPM производятся в файле "/etc/php5/fpm/pool.d/www.conf" | ||
fastcgi_pass php-fpm; | fastcgi_pass php-fpm; | ||
Строка 459: | Строка 436: | ||
set $path_info $fastcgi_path_info; | set $path_info $fastcgi_path_info; | ||
fastcgi_param PATH_INFO $path_info; | fastcgi_param PATH_INFO $path_info; | ||
- | # Указание дополнительных переменных окружения PHP | + | # Additional variables |
- | fastcgi_param SERVER_ADMIN admin@example.com; | + | fastcgi_param SERVER_ADMIN email@example.com; |
fastcgi_param SERVER_SIGNATURE nginx/$nginx_version; | fastcgi_param SERVER_SIGNATURE nginx/$nginx_version; | ||
fastcgi_index index.php; | fastcgi_index index.php; | ||
</code> | </code> | ||
- | |||
- | Сохраняем и закрываем файл, подключаем его строчкой | ||
- | <code> include common/php-fpm;</code> | ||
- | в файле «/etc/nginx/sites-available/example.com». | ||
- | Закрываем фигурные скобки директивы «location» | ||
- | <code> | ||
- | } | ||
- | </code> | ||
- | |||
- | ==== Доступ к Nagios через Nginx ==== | ||
- | Если на сервере используется система мониторинга «Nagios», то обеспечение работы её веб-интерфейса тоже можно возложить на «Nginx», точнее на связку «Nginx+PHP-FPM/FastCGIWrap». Установим дополнительное ПО «FastCGIWrap» | ||
- | <code bash>sudo apt-get install fcgiwrap</code> | ||
- | это позволит открывать «*.cgi» файлы. | ||
- | |||
- | Открываем описанный выше файл со списком серверов выгрузки данных (upstream) | ||
- | <code bash>sudo nano /etc/nginx/common/upstream</code> | ||
- | и добавим в него строчки | ||
- | <code> | ||
- | upstream fcgiwrap | ||
- | { | ||
- | # FastCGIWrap сервер | ||
- | server unix:/var/run/fcgiwrap.socket; | ||
- | } | ||
- | </code> | ||
- | Создаём файл с параметрами для «FastCGIWrap» | ||
- | <code>sudo touch /etc/nginx/common/fcgiwrap | ||
- | sudo nano /etc/nginx/common/fcgiwrap</code> | ||
- | где укажем | ||
- | <code> | ||
- | # Отключаем сжатие для быстродействия | ||
- | gzip off; | ||
- | |||
- | # Стандартные параметры | ||
- | include fastcgi_params; | ||
- | |||
- | # Доп. параметры | ||
- | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | ||
- | fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name; | ||
- | fastcgi_param SERVER_ADMIN admin@example.com; | ||
- | fastcgi_param SERVER_SIGNATURE nginx/$nginx_version; | ||
- | |||
- | # Направление запроса к upstream-серверу | ||
- | fastcgi_pass fcgiwrap; | ||
- | </code> | ||
- | |||
- | Создаём файл с описанием настроек для «Nagios» | ||
- | <code bash>sudo touch /etc/nginx/common/locations/nagios</code> | ||
- | и откроем его для редактирования | ||
- | <code bash>sudo nano /etc/nginx/common/locations/nagios</code> | ||
- | И укажем необдимые параметры. | ||
- | В «Ubuntu» «Nagios» устанавливается в разные папки, «PHP»-файлы веб-интерфейса обычно находятся в «/usr/share/nagios3/htdocs/» | ||
- | <code> | ||
- | location "/nagios/" | ||
- | { | ||
- | index index.php index.html; | ||
- | try_files $uri $uri/ /nagios/index.php; | ||
- | alias "/usr/share/nagios3/htdocs/"; | ||
- | } | ||
- | </code> | ||
- | «CSS»-файлы для веб-инрфейса находятся в «/etc/nagios3/stylesheets/» | ||
- | <code> | ||
- | location ^~ "/nagios/stylesheets/" | ||
- | { | ||
- | alias "/etc/nagios3/stylesheets/"; | ||
- | } | ||
- | location ^~ "/nagios3/stylesheets/" | ||
- | { | ||
- | alias "/etc/nagios3/stylesheets/"; | ||
- | } | ||
- | </code> | ||
- | Картинки тоже прийдется описать отдельно | ||
- | <code> | ||
- | location ^~ "/nagios/images/" | ||
- | { | ||
- | alias "/usr/share/nagios3/htdocs/images/"; | ||
- | } | ||
- | location ^~ "/nagios3/images/" | ||
- | { | ||
- | alias "/usr/share/nagios3/htdocs/images/"; | ||
- | } | ||
- | </code> | ||
- | «JS»-скрипты | ||
- | <code> | ||
- | location ^~ "/nagios/js/" | ||
- | { | ||
- | alias "/usr/share/nagios3/htdocs/js/"; | ||
- | } | ||
- | location ^~ "/nagios3/js/" | ||
- | { | ||
- | alias "/usr/share/nagios3/htdocs/js/"; | ||
- | } | ||
- | </code> | ||
- | Перенаправление «PHP»-скриптов уже было описано выше, но тут требуется сделать дополнительные настройки, опишем все заново | ||
- | <code> | ||
- | location ~ "^/nagios/(.+?\.php)(/.*)?$" | ||
- | { | ||
- | # Папки nagios в /var/www нет, так что требуется сделать внутренне перенаправление в папку /usr/share/nagios3/htdocs/ | ||
- | root "/usr/share/nagios3/htdocs/"; | ||
- | # Проверка существования файла на диске | ||
- | # $1 - отсылка к первой скобке регулярного выражения в location | ||
- | # Если ничего не найдено, то открыть /nagios/index.php (можно поменять на =404) | ||
- | try_files $1 $uri $uri/ /nagios/index.php; | ||
- | # Собственно перенаправление | ||
- | rewrite "^/nagios/(.+?\.php)(/.*)?$" /$1$2 break; | ||
- | # Авторизация | ||
- | auth_basic "Authorization required to access Nagios"; | ||
- | auth_basic_user_file htpasswd; | ||
- | |||
- | # Перенаправление запросов к PHP-FPM | ||
- | include common/php-fpm; | ||
- | } | ||
- | </code> | ||
- | Подобным образом описываем перенаправление запросов к «CGI»-сприптам серверу «FastCGIWarp» | ||
- | <code> | ||
- | location ~* ^/cgi-bin/nagios3/(.+?\.cgi)$ | ||
- | { | ||
- | root "/usr/lib/cgi-bin/nagios3"; | ||
- | try_files $1 $uri $uri/ =404; | ||
- | rewrite "^/cgi-bin/nagios3/(.+?\.cgi)$" /$1 break; | ||
- | |||
- | auth_basic "Authorization required to access Nagios"; | ||
- | auth_basic_user_file htpasswd; | ||
- | |||
- | # Передаём скрипту параметры аутентификации | ||
- | fastcgi_param AUTH_USER $remote_user; | ||
- | fastcgi_param REMOTE_USER $remote_user; | ||
- | |||
- | include common/fcgiwrap; | ||
- | } | ||
- | </code> | ||
- | Сохраняем и закрываем файл. | ||
- | |||
- | А в файле «/etc/nginx/sites-available/example.com» дописываем | ||
- | <code> | ||
- | # Nagios | ||
- | include common/locations/nagios; | ||
- | </code> | ||
- | |||
- | Выше были описаны параметры аутентификации для доступа к «Nagios», однако сам файл с пользователем и хеш-суммой от пароля хранится в неизвестном для «Nginx» файле «/etc/nagios3/htpasswd.users». Просто перенесём эти настройки в известный для «Nginx» файл «/etc/nginx/htpasswd», например, командой выполненной от корневого пользователя «root» | ||
- | <code bash> | ||
- | cat /etc/nagios3/htpasswd.users >> /etc/nginx/htpasswd | ||
- | </code> | ||
- | хотя, конечно, лучше это сделать вручную. | ||
==== Кеширование ==== | ==== Кеширование ==== | ||
+ | Выше, в примерах, был упомянут файл «/etc/nginx/common/cache» | ||
- | Сайт работает значительно лучше когда часть контента сохранена на стороне клиента с прошлого посещения сайта. Не все файлы можно кешировать. Поэтому описание кеширования производится в самом конце (т.е. эти настройки будут иметь наименьший приоритет и есть шанс что это не повлияет на правильную работу сайта). Создаём файл с параметрами для кеширования | + | Сайт работает значительно лучше когда часть контента сохранена на стороне клиента с прошлого посещения сайта. Не все файлы можно кешировать. Поэтому описание кеширования производится в самом конце (т.е. эти настройки будут иметь наименьший приоритет и есть шанс что это не повлияет на правильную работу сайта). Создадим файл с параметрами для кеширования |
- | <code>sudo touch /etc/nginx/common/cache | + | <code=bash>sudo touch /etc/nginx/common/cache |
sudo nano /etc/nginx/common/cache</code> | sudo nano /etc/nginx/common/cache</code> | ||
где укажем | где укажем | ||
- | <code>location ~* ".+\.(?:ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|css|swf|js|atom|jpe?g|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$" | + | <code=php>location ~* ".+\.(?:ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|css|swf|js|atom|jpe?g|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$" |
{ | { | ||
access_log off; | access_log off; | ||
Строка 621: | Строка 456: | ||
}</code> | }</code> | ||
- | и указываем считывать этот файл строчкой в «/etc/nginx/sites-available/example.com» | + | ==== Окончание ==== |
- | <code> | + | |
- | include common/cache; | + | |
- | </code> | + | |
- | + | ||
- | ==== Завершение редактирования конфигурации ==== | + | |
Закрываем фигурные скобки директивы «server» в «/etc/nginx/sites-available/example.com» | Закрываем фигурные скобки директивы «server» в «/etc/nginx/sites-available/example.com» | ||
- | <code> | + | <code=php> |
} | } | ||
</code> | </code> | ||
Строка 641: | Строка 471: | ||
sudo service php5-fpm restart | sudo service php5-fpm restart | ||
</code> | </code> | ||
+ | |||
+ | ====== Проверка ====== | ||
+ | |||
+ | Проверить свой сайт можно создав файл «info.php» с содержанием | ||
+ | <code=php><?php | ||
+ | phpinfo(); | ||
+ | ?> | ||
+ | </code> | ||
+ | затем скопировав его, например, в «/var/www/wordpress/wp-content/uploads/», затем открыв адрес в браузере «http://example.com/wordpress/wp-content/uploads/info.php», если он выполнится вместо того чтобы просто сохранится — то что-то настроено неправильно, в этой директории php файлы выполняться не должны ни в коем случае (она доступна для загрузки) | ||
+ | |||
+ | Проверить свой сайт на скорость и прочее можно тут: | ||
+ | * [[http://www.webpagetest.org/|webpagetest.org]] | ||
+ | * [[https://developers.google.com/speed/pagespeed/insights/|developers.google.com]] | ||
+ | * [[https://www.ssllabs.com/ssltest/|ssllabs.com]] | ||
====== Ссылки ====== | ====== Ссылки ====== |