News:

Теория- это когда ты знаешь все, но ничего не работает. Практика - это когда все работает, но никто не знает почему.

Main Menu

Настройки CMS для работы с NGINX

Started by Уваров А.С., 07 October 2016, 20:36

Previous topic - Next topic

0 Members and 6 Guests are viewing this topic.

Уваров А.С.

В данной теме мы решили собрать конфигурации NGINX+PHP-FPM для работы в связке с популярными веб-движками. Базовые настройки приведены в статье: Настраиваем веб-сервер на базе Nginx + PHP-FPM в Debian / Ubuntu Server, здесь только особенности настройки для того или иного движка.

Drupal

устраняет некоторые ошибки при работе с движком:

location ~ \.php$|^/update.php {
        if_modified_since before;
try_files $uri =404;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
fastcgi_pass_header Last-Modified;
        include fastcgi_params;
fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
}

location / {
      try_files $uri /index.php?$query_string;

location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }

 location ~ ^/sites/.*/files/styles/ {
        try_files $uri @rewrite;
    }

Wordpress

поддержка ЧПУ

location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}

STALKER_SLX

#1
С позволения администрации немного расширю вопрос данной темы. Кому-то пригодится в самый раз, да и самому можно будет подглянуть, если что :)
Хочу сразу отметить, что изложенные автором в предыдущем сообщении настройки для CMS Drupal – актуальны лишь для 7-й версии движка и PHP 5.x (см. официальную документацию тут – https://www.nginx.com/resources/wiki/start/topics/recipes/drupal/).

Приведенные мной далее настройки долгое время собирал сам по кусочкам на просторах Интернета и уже успешно их протестировал на связке: Ubuntu 16.04 + Nginx 1.13 + PHP 7.x. Ошибок пока не выявлено!

Для 6-й версии Drupal
# Создаем алиас для rewrite
location @rewrite {
       rewrite ^/(.*)$ /index.php?q=$1;
   }

location / {
           try_files $uri @rewrite;
   }

location ~ '\.php$|^/update.php' {
       fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
       include fastcgi_params;
       # Block httpoxy attacks. See https://httpoxy.org/.
       fastcgi_param HTTP_PROXY "";
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param PATH_INFO $fastcgi_path_info;
       fastcgi_param QUERY_STRING $query_string;
       fastcgi_intercept_errors on;
       fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
   }

   # Для правильного отображения элементов навигации и CSS-стилей.
   location ~ ^/sites/.*/files/imagecache/ {
       try_files $uri @rewrite;
   }

# Для обработки личных файлов через Drupal. Путь к личным файлам может иметь языковой префикс.
   location ~ ^(/[a-z\-]+)?/system/files/ {
       try_files $uri /index.php?$query_string;
   }

   location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
       try_files $uri @rewrite;
       expires max;
       log_not_found off;
   }



Для 8-й версии Drupal
location / {
       index index.php;
       try_files $uri $uri/ /index.php$is_args$args;
   }

# Создаем алиас для rewrite
location @rewrite {
       rewrite ^/(.*)$ /index.php?q=$1;
   }

location ~ '\.php$|^/update.php' {
fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
include fastcgi_params;
# Block httpoxy attacks. See https://httpoxy.org/.
fastcgi_param HTTP_PROXY "";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param QUERY_STRING $query_string;
fastcgi_intercept_errors on;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}

   # Для правильного отображения элементов навигации и CSS-стилей.
    location ~ ^/sites/.*/files/styles/ {
        try_files $uri @rewrite;
   }

# Для обработки личных файлов через Drupal. Путь к личным файлам может иметь языковой префикс.
   location ~ ^(/[a-z\-]+)?/system/files/ {
       try_files $uri /index.php?$query_string;
   }

   location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
       try_files $uri @rewrite;
       expires max;
       log_not_found off;
   }




Joomla 3.x
В файле виртуального хоста Joomla 3.x обязательно должна присутствовать такая конструкция:

location / {
  try_files $uri $uri/ /index.php?q=$uri&$args;
  }


Если не удается попасть в панель управления движком Joomla 3.x – адрес_вашего_сайта/administrator/ (для наглядности примера – test1.ru/administrator/), а вместо этого происходить редирект на главную страницу сайта или выдает ошибку 404 (при вводе правильного логина и пароля), тогда нужно добавить в файл виртуального хоста параметр «SCRIPT_NAME», чтобы получилось так:

location ~ \.php$ {
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      fastcgi_index index.php;
      include fastcgi_params;
      fastcgi_param  SCRIPT_NAME $fastcgi_script_name;
      fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
  }


После этого админка наконец-то заработала!

Если кто-то из ИТ-корифеев заметил в указанных мной конфигурациях ошибки/ «костыли» и знает, как это функционально улучшить – буду весьма признателен за конструктив!