Редактирование Nginx
Материал из K.Wiki
Внимание! Вы не авторизовались на сайте.
В истории изменений этой страницы будет записан ваш IP-адрес.Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 141: | Строка 141: | ||
Для учета изменений настроек нужно перезагрузить службу | Для учета изменений настроек нужно перезагрузить службу | ||
− | + | sodu service nginx reload | |
Ссылки | Ссылки | ||
Строка 152: | Строка 152: | ||
По-умолчанию, настройки хранятся в отдельных файлах в директории '''/etc/nginx/sites-available/''', | По-умолчанию, настройки хранятся в отдельных файлах в директории '''/etc/nginx/sites-available/''', | ||
а для активации хоста нужно создать символьную ссылку в директории '''/etc/nginx/sites-enabled/''' на соответствующий файл настроек | а для активации хоста нужно создать символьную ссылку в директории '''/etc/nginx/sites-enabled/''' на соответствующий файл настроек | ||
− | + | # ln -s /etc/nginx/sites-available/{имя сайта} /etc/nginx/sites-enabled/{имя сайта} | |
и перезагрузить службу | и перезагрузить службу | ||
− | + | # service nginx reload | |
Один файл может содержать описание для нескольких сайтов, каждое должно находиться логическом блоке | Один файл может содержать описание для нескольких сайтов, каждое должно находиться логическом блоке | ||
server { | server { | ||
− | + | # Для того, чтобы сайт был доступен по адресам <nowiki>http://{имя домена 1}/</nowiki> и <nowiki>http://{имя домена 2}/</nowiki>. | |
server_name {имя домена 1} {имя домена 2}; | server_name {имя домена 1} {имя домена 2}; | ||
− | + | # Обрабатываемый порт. | |
listen 80; | listen 80; | ||
− | + | # Обрабатываемый порт для определенного домена. | |
#listen {имя домена} 8080; | #listen {имя домена} 8080; | ||
− | + | # Обрабатываемый порт для ipv6. | |
#listen [::]:80 [{имя домена}] ipv6only=on; | #listen [::]:80 [{имя домена}] ipv6only=on; | ||
− | + | # Директория с файлами сайта. | |
root /var/www/{имя сайта}/www; | root /var/www/{имя сайта}/www; | ||
− | + | # Файл лога для проблем доступа. | |
access_log /var/www/{имя сайта}/access.log; | access_log /var/www/{имя сайта}/access.log; | ||
− | + | # Файл лога для ошибок. | |
error_log /var/www/{имя сайта}/error.log; | error_log /var/www/{имя сайта}/error.log; | ||
− | + | # Подключение шаблона со стандартными настройками. | |
include /etc/nginx/templates/default; | include /etc/nginx/templates/default; | ||
− | + | # Страница для ошибки 404. | |
#error_page 404 /404.html; | #error_page 404 /404.html; | ||
− | + | # Перенаправление при ошибках на статическую страницу /50x.html. | |
#error_page 500 502 503 504 /50x.html; | #error_page 500 502 503 504 /50x.html; | ||
#location = /50x.html { | #location = /50x.html { | ||
Строка 197: | Строка 197: | ||
Например, стандартные настройки HTTP-хоста в файле '''/etc/nginx/templates/default''' | Например, стандартные настройки HTTP-хоста в файле '''/etc/nginx/templates/default''' | ||
− | + | # Файлы, открываемые при пустом пути, в порядке приоритета. | |
index index.php index.html index.htm; | index index.php index.html index.htm; | ||
location / { | location / { | ||
− | + | # Сначала запрос обрабатывается как файл, потом как директория, потом происходит переход на страницу 404. | |
try_files $uri $uri/ =404; | try_files $uri $uri/ =404; | ||
− | + | # Раскоментировать для использования naxsi в этой области. | |
#include /etc/nginx/naxsi.rules | #include /etc/nginx/naxsi.rules | ||
} | } | ||
− | + | # Закрыть доступ к файлами .htaccess и .htpassword. | |
location ~ /\.ht { | location ~ /\.ht { | ||
deny all; | deny all; | ||
} | } | ||
− | + | # Отключить логи, связанные с отсутствием иконки сайта. | |
location = /favicon.ico { | location = /favicon.ico { | ||
log_not_found off; | log_not_found off; | ||
Строка 219: | Строка 219: | ||
} | } | ||
− | + | # Доступ к файлу с настройками для поисковых роботов. | |
location = /robots.txt { | location = /robots.txt { | ||
allow all; | allow all; | ||
log_not_found off; | log_not_found off; | ||
access_log off; | access_log off; | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
=== PHP === | === PHP === | ||
Для работы с [[PHP-FPM]] достаточно создать шаблон '''/etc/nginx/templates/php''': | Для работы с [[PHP-FPM]] достаточно создать шаблон '''/etc/nginx/templates/php''': | ||
− | + | # Адрес FastCGI-сервера (имя или адрес и порт или путь к UNIX-сокету). | |
− | + | # Указывается в настройках виртуального хоста. | |
#fastcgi_pass | #fastcgi_pass | ||
− | + | # Имя файла, который при создании переменной $fastcgi_script_name будет добавляться после URI, если URI заканчивается слэшом. | |
fastcgi_index index.php; | fastcgi_index index.php; | ||
− | + | # Передавать ли клиенту ответы FastCGI-сервера с кодом больше либо равным 300. | |
#fastcgi_intercept_errors on; | #fastcgi_intercept_errors on; | ||
− | + | # Добавить параметры из /etc/nginx/fastcgi_param. | |
include fastcgi_params; | include fastcgi_params; | ||
− | + | # Путь к скрипту, который будет передан в PHP-FPM. | |
− | + | # При использовании chroot окружения нужно указывать относительный путь. | |
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | ||
− | + | # Закрывать ли соединение с FastCGI-сервером в случае, если клиент закрыл соединение, не дождавшись ответа. | |
fastcgi_ignore_client_abort off; | fastcgi_ignore_client_abort off; | ||
и добавить в настройки виртуального хоста блок (<tt>{путь к файлу сокета}</tt> нужно заменить своим значением) | и добавить в настройки виртуального хоста блок (<tt>{путь к файлу сокета}</tt> нужно заменить своим значением) | ||
− | + | # Настройки обработки PHP-скриптов. | |
location ~ \.php$ { | location ~ \.php$ { | ||
− | + | # Подключение шаблона с настройками PHP. | |
include /etc/nginx/templates/php; | include /etc/nginx/templates/php; | ||
− | + | # Путь к UNIX-сокету PHP-FPM. | |
fastcgi_pass unix:{путь к файлу сокета} | fastcgi_pass unix:{путь к файлу сокета} | ||
} | } | ||
Строка 268: | Строка 261: | ||
Например (<tt>{адрес почты}</tt> и <tt>{имя сайта}</tt> нужно заменить своими значениями) | Например (<tt>{адрес почты}</tt> и <tt>{имя сайта}</tt> нужно заменить своими значениями) | ||
− | + | # Путь к sendmail и параметр, указывающий адрес почты администратора сайта. | |
fastcgi_param PHP_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f{адрес почты}"; | fastcgi_param PHP_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f{адрес почты}"; | ||
− | + | # Директории с файлами сайта, файлами сессий и временными файлами. | |
fastcgi_param PHP_ADMIN_VALUE "open_basedir = /var/www/{имя сайта}/:/tmp/:/"; | fastcgi_param PHP_ADMIN_VALUE "open_basedir = /var/www/{имя сайта}/:/tmp/:/"; | ||
− | + | # Ограничение памяти для выполнения скриптов. | |
fastcgi_param PHP_VALUE "memory_limit = 256M"; | fastcgi_param PHP_VALUE "memory_limit = 256M"; | ||
− | + | # Максимальное время в секундах, в течение которого скрипт должен полностью загрузиться. | |
fastcgi_param PHP_VALUE "max_execution_time = 60"; | fastcgi_param PHP_VALUE "max_execution_time = 60"; | ||
Строка 287: | Строка 280: | ||
=== node.js === | === node.js === | ||
Для работы с сервером, основанным на [[node.js]] достаточно создать шаблон '''/etc/nginx/templates/nodejs_{имя сервера}''' (пример для сервера, основанного на [[node.js/Express|Express]]; <tt>{имя сервера}</tt>, <tt>{путь к корневой директории проекта}</tt>, <tt>{номер порта}</tt> и {путь к unix-сокету} нужно заменить подходящими значениями): | Для работы с сервером, основанным на [[node.js]] достаточно создать шаблон '''/etc/nginx/templates/nodejs_{имя сервера}''' (пример для сервера, основанного на [[node.js/Express|Express]]; <tt>{имя сервера}</tt>, <tt>{путь к корневой директории проекта}</tt>, <tt>{номер порта}</tt> и {путь к unix-сокету} нужно заменить подходящими значениями): | ||
− | <pre> | + | <pre># Директория с файлами сайта. |
root {путь к корневой директории проекта}/public; | root {путь к корневой директории проекта}/public; | ||
− | + | # Файл лога для проблем доступа. | |
access_log {путь к корневой директории проекта}/access.log; | access_log {путь к корневой директории проекта}/access.log; | ||
− | + | # Файл лога для ошибок. | |
error_log {путь к корневой директории проекта}/error.log; | error_log {путь к корневой директории проекта}/error.log; | ||
− | + | # Передача node.js обработки запросов не статического контента. | |
location ~ ^/(?!css|images|js|favicon.ico) { | location ~ ^/(?!css|images|js|favicon.ico) { | ||
− | + | # Для сервера, слушающего порт. | |
− | #proxy_pass http://localhost:{номер порта}; | + | # proxy_pass http://localhost:{номер порта}; |
− | + | # Для сервера, слушающего unix-сокет. | |
proxy_pass http://unix:{путь к unix-сокету}:$uri$is_args$args; | proxy_pass http://unix:{путь к unix-сокету}:$uri$is_args$args; | ||
− | |||
proxy_http_version 1.1; | proxy_http_version 1.1; | ||
proxy_set_header Upgrade $http_upgrade; | proxy_set_header Upgrade $http_upgrade; | ||
Строка 310: | Строка 302: | ||
} | } | ||
− | + | # Отключить логи, связанные с отсутствием иконки сайта. | |
location = /favicon.ico { | location = /favicon.ico { | ||
log_not_found off; | log_not_found off; | ||
Строка 316: | Строка 308: | ||
} | } | ||
− | + | # Доступ к файлу с настройками для поисковых роботов. | |
location = /robots.txt { | location = /robots.txt { | ||
allow all; | allow all; |