Рабочий конфиг nginx
При переносе Majordomo с RaspberryPi на самодельный NAS с Openmediavault столкнулся с необходимостью создания конфига для nginx. В процессе столкнулся с проблемами при обращении к API и невозможностью настройки модуля YandexHome, но на профильных ветках на форуме данные проблемы были освещены и в итоге родился следующий конфиг, на котором все работает без проблем :)
ВНИМАНИЕ!!! Из-за особенностей движка коннекта в конфиге есть такие строки: nfтчкphp. В этом слове надо "тчк" заменить на "." (без кавычек).
server {
listen 80 default_server; #слушаем 80й порт
listen [::]:80;
listen 443 ssl; #слушаем 443 порт https для YandexHome
listen [::]:443 ssl;
ssl_certificate /etc/letsencrypt/live/fullchain.pem; #путь к цепочке сертификатов
ssl_certificate_key /etc/letsencrypt/live/privkey.pem; #путь к сертификату
server_name mdm.local; #имя сайта, можно поставить _ для обращения по IP
charset utf-8; #кодировка utf-8 по умолчанию
client_max_body_size 150M; #максимально допустимый размер запроса клиента для возможности загрузки больших файлов
access_log off; #отключаем лог подключений
error_log /var/log/nginx/majordomo_error.log; #файл лога ошибок
root /var/www/majordomo; #путь к папке Majordomo
index index.php index.htm index.html; # индекс
location /api { #обработка API запросов
rewrite ^(.*)$ /api.php;
}
location / {
rewrite pda$ /popup/pda.html redirect; #обработка pda
if (!-e $request_filename){ #если нет запрошенного файла, перенаправляем на nfтчкphp
rewrite ^(.*)$ /nfтчкphp;
}
}
location /config.php { #запрет доступа к config.php
deny all;
}
location /debmes.txt { #запрет доступа к debmes
deny all;
}
location /backup { #запрет доступа к бэкапам
allow 127.0.0.1; #для самого сервера доступ разрешен
deny all;
}
location ~ /\.ht { #запрет доступа к .ht... файлам
deny all;
}
location ~ [^/]\.php(/|$) { #обработка php
fastcgi_split_path_info ^(.+?\.php)(/.*)?$;
fastcgi_pass unix:/run/php/php7.3-fpm.sock; #путь к php-fpm
fastcgi_index index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
#подробное описание настроек выше можно прочитать по ссылке https://nginx.org/ru/docs/http/ngx_http_fastcgi_module.html#fastcgi_split_path_info
#настройки ниже относятся к настройкам PHP
fastcgi_param PHP_VALUE "short_open_tag=on"; #разрешаем короткую форму записи (<? ?>) тегов PHP.
fastcgi_param PHP_VALUE "error_reporting=E_ALL & ~E_NOTICE"; #задаем уровни ошибок
fastcgi_param PHP_VALUE "max_execution_time=90"; #задаем максимальное время в секундах, в течение которого скрипт должен полностью загрузиться
fastcgi_param PHP_VALUE "max_input_time=180"; #задаем максимальное время в секундах, в течение которого скрипт должен разобрать все входные данные, переданные запросами вроде POST или GET
fastcgi_param PHP_VALUE "post_max_size=200M"; #задаем максимальный размер отправляемого через POST-запрос файла
fastcgi_param PHP_VALUE "upload_max_filesize=50M"; #задаем максимальный размер файла для закачки
fastcgi_param PHP_VALUE "max_file_uploads=150"; #задаем максимальное количество одновременных загрузок
}
}
Иркутск, Россия
На форуме: V.A.S.t