И снова Nginx.

InstantCMS 2.X

Обсуждаем очередную конфигурацию nginx, для InstantCMS

#1 6 мая 2024 в 12:46

Всем девопсам, пламенный привет. Остальных, заглянувших форумчан, тоже приветствую :)

Недавно искал конфиг nginx для InstantCMS, но нашёл только срач тему на форуме и такой файлик на github. В первом источнике всё было очень страшно и непонятно, второй оказался более читабельный, поэтому я стал использовать его. И всё бы ничего, но путь "/admin" стабильно отдавал страницу с кодом 403. Возможно, такая проблема из-за того, что адатировал конфиг с github под свой проект, но… Короче, TL;DR: я написал свою конфигурацию.

Постарался сделать его более минималистичным и читабельным, но, т.к. не знаю всех особенностей CMS, отдаю его на вашу критику. Она действительно очень важна! Тестировал на локальном сайте с Angie 1.5.0 | PHP-FPM 7.4 | InstantCMS 2.16.3 — полёт нормальный.

Когда (и «если»), составим оптимальный конфиг — напишу пост в блоге, чтобы любителям творения Сысоева жилось легче)

Содержимое файла конфига:


  1. server {
  2. listen 80;
  3. server_name site_domain;
  4. root /var/www/html;
  5. index index.php;
  6. access_log /var/www/logs/web-server.access.log;
  7. error_log /var/www/logs/web-server.error.log warn;
  8. autoindex off;
  9.  
  10. #Секция для установки CMS
  11. #location /install {
  12. # #Если запрашиваемый файл не найден
  13. # if (!-e $request_filename) {
  14. # #Передаю дальше в роутинг InstantCMS
  15. # rewrite ^/(.+)$ /install/index.php?$args last;
  16. # }
  17. # location ~ ^/install/index\.php {
  18. # try_files /does_not_exists @php;
  19. # }
  20. #}
  21.  
  22. location / {
  23. #Если запрашиваемый файл не найден
  24. if (!-f $request_filename) {
  25. #Если есть, удаляем слэш в конце URI и делаем 301 редирект
  26. rewrite ^/(.+)/$ /$1 permanent;
  27. #Передаю дальше в роутинг InstantCMS
  28. rewrite ^/(.+)$ /index.php?$args last;
  29. }
  30.  
  31. #Все запросы к /index.php перенаправляю на php обработчик
  32. location ~ ^/index\.php {
  33. try_files /does_not_exists @php;
  34. }
  35.  
  36. #Досуп к карте сайта
  37. location ~ ^/sitemap {
  38. allow all;
  39. rewrite ^/sitemap(.*).xml$ /cache/static/sitemaps/sitemap$1.xml break;
  40. rewrite ^/sitemap(.*)$ /index.php last;
  41. }
  42.  
  43. #Правила посещения сайта для неодушевлённых
  44. location ~ ^/robots.txt {
  45. allow all;
  46. rewrite ^/robots.txt$ /index.php last;
  47. }
  48.  
  49. #Запрет просмотра "dot-файлов"
  50. location ~ /\. {
  51. deny all;
  52. }
  53.  
  54. #Запрет просмотра "всякого-разного"
  55. location ~* \.(php|log|tpl|txt|twig|xml|ini)$ {
  56. deny all;
  57. }
  58. }
  59.  
  60. location ~* ^.+\.(jpg|jpeg|gif|png|svg|webp|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
  61. expires 365d;
  62. access_log off;
  63. }
  64.  
  65. location @php {
  66. #Тут ваши настройки php
  67. }
  68. }
Дабы эта тема не превращалась в срач, предлагаю обсуждать именно конфигурацию веб-сервера, для работы InstantCMS, а не преимущества/недостатки apache/nginx/fpm и т.п.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.