Веб-сервер на основе Nginx и PHP-FPM Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Следующая версия Следующая версия справа и слева
wiki:nginx-phpfpm [2015/06/01 03:45]
[Перенаправление обработки php-скриптов внутреннему серверу «PHP-FPM»]
wiki:nginx-phpfpm [2015/06/01 03:52]
синтаксим
Строка 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>​
Строка 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;
Строка 202: Строка 202:
  
 Указание максимального размера запроса -- необходимо если сервер будет использоваться для загрузки больших файлов (например,​ для построения небольшого облачного хранилища на основе «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>​
Строка 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>​
Строка 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/"​
 { {
Строка 305: Строка 305:
  
 Натройки «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>​
 Указываем виртуальную директорию (используется для удобства и читабельности) в которую будут перенаправляться запросы при необходимости Указываем виртуальную директорию (используется для удобства и читабельности) в которую будут перенаправляться запросы при необходимости
Строка 352: Строка 352:
  
 Создадим файл настроек для «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»
Строка 413: Строка 413:
 ==== Перенаправление обработки php-скриптов внутреннему серверу «PHP-FPM» ==== ==== Перенаправление обработки php-скриптов внутреннему серверу «PHP-FPM» ====
  
-В примерах выше использовался файл «/​etc/​common/​php-fpm» — в нём идет перенаправление обработки php-скриптов внутреннему серверу «PHP-FPM»+В примерах выше использовался файл «/etc/nginx/​common/​php-fpm» — в нём идет перенаправление обработки php-скриптов внутреннему серверу «PHP-FPM»
  
 <note important>​ <note important>​
Строка 421: Строка 421:
  
 Создаём этот файл Создаём этот файл
-<​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>​
 с содержанием с содержанием
Строка 443: Строка 443:
  
 ==== Кеширование ==== ==== Кеширование ====
 +Выше, в примерах,​ был упомянут файл «/​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;​
Строка 454: Строка 455:
  expires max;​  expires max;​
  }</​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>​