Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
wiki:nginx-phpfpm [2015/06/01 03:39] [Базовые ограничения доступа] |
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> | ||
| и поменять значения на требуемые. | и поменять значения на требуемые. | ||
| - | ==== Базовые ограничения доступа ==== | + | ==== Базовые ограничения ==== |
| - | Выше было написана строчка для подключение файла «/etc/common/deny» | + | Выше была написана строчка для подключение файла «/etc/nginx/common/deny» |
| <code=php>include common/deny;</code> | <code=php>include common/deny;</code> | ||
| рассмотрим его содержание. В нём идет запрет доступа к некоторым стандартным файлам. Создадим этот файл | рассмотрим его содержание. В нём идет запрет доступа к некоторым стандартным файлам. Создадим этот файл | ||
| Строка 406: | Строка 406: | ||
| </code> | </code> | ||
| - | <note important>Следует быть бдительным, неверно указанный шаблон здесь может сильно навредить, возможно лучше не дописывать эти директивы или указать их в конце, так как они имеют высокий приоритет. Например, клиент ownCloud может начать удалять файлы которые не сможет загрузить на сервер из-за неправильного запрета где-то в конфигурационном файле</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-скриптов внутреннему серверу «PHP-FPM» ==== | + | |
| - | + | ==== Вызов PHP-FPM ==== | |
| - | Далее идет перенаправление обработки php-скриптов внутреннему серверу «PHP-FPM» | + | |
| + | В примерах выше использовался файл «/etc/nginx/common/php-fpm» — в нём идет перенаправление обработки php-скриптов внутреннему серверу «PHP-FPM» | ||
| <note important> | <note important> | ||
| Строка 418: | Строка 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; | ||
| Строка 448: | Строка 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; | ||
| Строка 610: | Строка 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> | ||
| Строка 630: | Строка 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]] | ||
| ====== Ссылки ====== | ====== Ссылки ====== | ||