Всем девопсам, пламенный привет. Остальных, заглянувших форумчан, тоже приветствую :)
Недавно искал конфиг nginx для InstantCMS, но нашёл только срач тему на форуме и такой файлик на github. В первом источнике всё было очень страшно и непонятно, второй оказался более читабельный, поэтому я стал использовать его. И всё бы ничего, но путь "/admin" стабильно отдавал страницу с кодом 403. Возможно, такая проблема из-за того, что адатировал конфиг с github под свой проект, но… Короче, TL;DR: я написал свою конфигурацию.
Постарался сделать его более минималистичным и читабельным, но, т.к. не знаю всех особенностей CMS, отдаю его на вашу критику. Она действительно очень важна! Тестировал на локальном сайте с Angie 1.5.0 | PHP-FPM 7.4 | InstantCMS 2.16.3 — полёт нормальный.
Когда (и «если»), составим оптимальный конфиг — напишу пост в блоге, чтобы любителям творения Сысоева жилось легче)
Содержимое файла конфига:
server { listen 80; server_name site_domain; root /var/www/html; index index.php; access_log /var/www/logs/web-server.access.log; error_log /var/www/logs/web-server.error.log warn; autoindex off; #Секция для установки CMS #location /install { # #Если запрашиваемый файл не найден # if (!-e $request_filename) { # #Передаю дальше в роутинг InstantCMS # rewrite ^/(.+)$ /install/index.php?$args last; # } # location ~ ^/install/index\.php { # try_files /does_not_exists @php; # } #} location / { #Если запрашиваемый файл не найден if (!-f $request_filename) { #Если есть, удаляем слэш в конце URI и делаем 301 редирект rewrite ^/(.+)/$ /$1 permanent; #Передаю дальше в роутинг InstantCMS rewrite ^/(.+)$ /index.php?$args last; } #Все запросы к /index.php перенаправляю на php обработчик location ~ ^/index\.php { try_files /does_not_exists @php; } #Досуп к карте сайта location ~ ^/sitemap { allow all; rewrite ^/sitemap(.*).xml$ /cache/static/sitemaps/sitemap$1.xml break; rewrite ^/sitemap(.*)$ /index.php last; } #Правила посещения сайта для неодушевлённых location ~ ^/robots.txt { allow all; rewrite ^/robots.txt$ /index.php last; } #Запрет просмотра "dot-файлов" location ~ /\. { deny all; } #Запрет просмотра "всякого-разного" location ~* \.(php|log|tpl|txt|twig|xml|ini)$ { deny all; } } location ~* ^.+\.(jpg|jpeg|gif|png|svg|webp|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ { expires 365d; access_log off; } location @php { #Тут ваши настройки php } }