Rapida Форк на базе simpla 2.3.8

Очередная версия.

# RAPIDA Ecommerce CMS
## SimplaCMS 2.3.8 fork


## ****************
## Changelog
## ****************

## =================
## v0.0.8.1.2 11.11.2017
## =================

### bugs:
- Исправлена работа страницы пользователя после авторизации.
- Исправлена работа обновления счетчика товаров в индикаторе корзины.
- Исправлена работа на странице восстановления пароля пользователя.
- Исправлена система восстановление пароля по почте.
- Исправлен пустой список брендов в карточке товара в админке.
- Устранены ошибки в simpla->categories
- Устранены ошибки при экспорте товаров
- Исправлен экспорт товаров.
- Мелкие доработки в xhr контроллере.
- Мелкие исправления в шаблонах админки и дизайна сайта в связи с переходом на изменение формата данных, предоставляемых api. (Simpla возвращала почти всега данные в виде простого числового массива внутри которого содержались объекты, если внутри элементов(свойств) объекта было несколько элементов, они тоже делались числовыми массивами). Очень неудобный для работы формат был полностью изменен. Теперь все только в массивах.
- Исправлено отображение опций товара в карточке товара.

### improvements:
- Запуск/возобновление сессии переведен из index.php в конструктор класса api/Simpla.php. Теперь стартовать сессиию отдельно не требуется, удобно для работы существующих сейчас отдельно ajax скриптах, которые запускаются не через index.php.
- Первые попытки использовать api системы через ajax. На странице корзины при удалении товара, производится запрос к api, в случае успеха удаляется соответствующая строка с товаром.

## =================
## v0.0.8.1.1 09.11.2017
## =================

### features:
- Система стала полностью совместима с сервером Nginx. Теперь Apache вообще не требуется. Удалось добиться за счет перевода большей части маршрутизации в саму систему, а не через файлы конфигурации веб-сервера. Simpla всю маршрутизацию делает только через .htaccess. Rapida же наооборот, всю маршрутизацию, в том числе в админ. панели, делает через главный контроллер. Файл конфигурации Nginx или для Apache содержит 2 инструкцию: 1. Все что не является реальным файлом на диске, направлять в /index.php. 2. Все что является реальным файлом на диске открывать непосредственно веб-сервером без участия php. Подобный подход позволяет не нагружать систему простыми запросами статических данных.
- В админку в раздел настройки выведен выключатель кеша.
- В админку в раздел настройки выведен переключатель способа записи кеша. Быстрый или экономный.
- В админку в раздел настройки выведен выключатель отладчика.
- Авторизация администратора переключена на общую авторизацию пользователей.
- Инсталер обучен создавать запись администратора по новой схеме (не через файл simpla/.passwd)
- Раздел настроек пользователя расширен возможностью установки статуса администратора. Для обновления версии БД без перезаписи необходимо выполнить следующие запросы:
```
ALTER TABLE `s_users` ADD `admin` TINYINT(1) NULL DEFAULT '0' AFTER `enabled`, ADD INDEX `perm` (`admin`);
ALTER TABLE `s_users` ADD `last_login` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `last_ip`, ADD INDEX `last_login` (`last_login`);
ALTER TABLE `s_users` ADD `perm` VARCHAR(200) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT '0' AFTER `enabled`;
ALTER TABLE `s_users` CHANGE `created` `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP();
ALTER TABLE `s_users` CHANGE `enabled` `enabled` TINYINT(1) NULL DEFAULT '0';
ALTER TABLE `s_users` DROP INDEX `email`, ADD UNIQUE `email` (`email`) USING BTREE;
ALTER TABLE `s_brands` CHANGE `url` `url` VARCHAR(255) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL;
```

### improvements:
- Эффективно работать с оптимизацией БД можно только на большой базе. Разбираюсь с индексами. Выясняется, что в некоторых случаях в БД отсутсвуют элементарные индексы, необходимость которых очевидна. Например, оказалось, что индекс поля created в таблице s_products отсутствует в Simpla. В результате простейший запрос:
```SELECT id, name, brand_id FROM s_products WHERE visible = 1 ORDER BY created DESC LIMIT 0, 3```
выполняется несколько секунд!
- Немного улучшил скорость импорта товаров за счет увеличение количества импортируемых товаров за 1 цикл скрипта simpla/ajax/import.php. Было 10 товаров, сделал 50 и добавил кеширование метода features->get_options_uniq().
- Добавил кеширование метода features->get_options_ids()
- Добавил 3 необязательный параметр при записи в дисковый кеш. Теперь можно использовать более быстрое сохранение и загрузку из кеша. set_cache_nosql($key, $data, $json). Параметр json - необязательный и по-умолчанию установлен в значение true. В этом случае кеш пишется в виде JSON строки с неэкранированными символами UNICODE, перед записью строка для экономии места преобразовывается в кодировку cp1251 (задается в конфиге). Сами функции json_encode/json_decode медленнее на 40%, чем serialize()/unserialize(), а еще конвертация. В общем если 3 параметр задан false, данные сохраняются в виде serialize строки без изменения кодировки. Таким образом экономится примерно 250мс, что из 500мс на загрузку всей страницы. Возможно выведу в опции, чтобы можно было не экономить место и добиться более высоких скоростей.
- Проведена ревизия фундаментальных методов класса db, которые отвечают за работу метода db->placehold(), удален неиспользуемый тип плейсхолдера # - константа. Остальным типам составлено описание, их стало так много, что вспомнить нужный бывает сложно.
- Заметно ускорен импорт товаров за счет сокращения выполнения дублирующихся операций по добавлению брендов, названий свойств. Сами значения свойств теперь добавляются в основном одновременно, одним запросом, а не по одному.
- Класс api/managers удален, теперь управления всеми пользователями, и покупателями и системными пользователями осуществляется через 1 класс api/users.

### bugs:
- Взамен jquery механизма импорта изображений в товар способом "перетаскивание" внедрен более простой механизм на чистом JS. Теперь работает без нареканий.
- Исправлена ошибка в магическом методе config->__get(), которая приводила к ошибке, если переменной в конфиге нет.
- Скорее не устранение бага, а усовершенствование, тем не менее пишу в баги потому что обнаружилось в ходе дебагинга функции импорта товаров. При импорте возврат от insert_id используется в дальнейшей работе, поскольку insert_id() давал 0, на ошибочных запросах, 0 использовался дальше, как нормальное значение. Метод db->insert_id() очень тупо возвращает то, что дает mysqli->insert_id, если запрос не удался - insert_id возвращает 0, что нельзя считать нормальным ответом. Теперь в случае ошибки, db->insert_id() возвращает false. Аналогичное поведение сделал и для db->num_rows().
- Исправление отсутствия отображения брендов на страницах каталога.
- Мелкие исправления то там, то здесь.
<-------------- добавлено через 421 сек. -------------->
В вайл config прописать доспуты к базе.
базу, да и вообще все, что нужно после скачивания с гита, лучше сделать через инсталер.

Задача: Поставить с нуля с гитхаба. (Самого приложения git у нас нет)
1. Качаем весь репозиторий архивом целиком
Код:
https://github.com/legale/rapida
2. Распаковываем туда, где у нас корневой каталог вебсервера.
3. Открываем браузер и пишем в адресной строке
Код:
http://localhost/install.php?step=database
Выполняем установку с шага database.

Задача: Поставить с нуля с гитхаба. У нас есть гитхаб
1. Заходим в каталог вебсервера и пишем
Код:
git clone https://github.com/legale/rapida
2. Открываем браузер и пишем в адресной строке
Код:
http://localhost/install.php?step=database
Выполняем установку с шага database.


Задача: Обновить систему с github
1. Заходим в каталог с установленной рапидой и пишем 1 простую команду
Код:
git pull
2. Если изменений в БД в обновлении не было - больше ничего делать не надо. Если изменения в базе были, то дополнительно к действиям в п.1 надо внести изменения в нашу базу. Какие именно запросы надо выполнить указано в информации по данному обновлению в файле README.MD в корневом каталоге.

P.S. Привычный способ установки из архива с дистрибутивом. Обновляется реже, чтобы не засорять репозиторий. Сейчас доступна самая последняя на настоящее время версия. Rapida 0.0.8.1.2
Код:
https://github.com/legale/rapida/tree/master/distro
 
Последнее редактирование:
Сейчас начал первые попытки использования в шаблоне api через ajax. Уже используется на странице корзины, когда удаляется товар. В Симпле удаление товара происходило путем перехода по ссылке на удаление товара, товар удалялся и заново загружалась страница корзины. Плохо тем, что для удаления 1 строчки на странице, страница загружалась целиком.

Для удобства использования создаю набор функций для удобного использования api через ajax. Эти функции загружаются автоматически при открытии любой страницы, но функции очень простые, работают без каких либо библиотек JS, вроде jquery или чего-то еще, поэтому не нагружают систему.
Сейчас принцип работы удаления товаров на странице корзины такой:
На страницу из js/main.js загружаются 2 функции.
Товары на странице имеют следующий вид
Код:
<tr varid="60677">
    <td class="image">
                 <a href="products/svetilnik-potolochnyj-donolux-dl1844212-white-r-dim"></a>
            </td>
    <td class="name">
        <a href="products/svetilnik-potolochnyj-donolux-dl1844212-white-r-dim">Светильник потолочный Donolux DL18442/12 White R Dim</a>    
    </td>
    <td class="price">
        9 480.00 RUR
    </td>
    <td class="price">
        18 960.00&nbsp;RUR
    </td>
    <td class="remove">
        <a href="#">
        <img src="design/default/images/delete.png" title="Удалить из корзины" alt="Удалить из корзины">
        </a>
    </td>
          
</tr>

Здесь для удобства в каждую строку товара выведен аттрибут varid с указанием id варианта товара. Этот id нам нужен, чтобы передевать api команду на удаление товара из корзины.

тут мы используем функцию live, которая работает аналогично jquery live. Она принимает 3 параметра, 1 тип события, которое мы хотим отслеживать, 2 объект или несколько объектов у которых мы хотим отслеживать событие и 3 параметр - функция, которую надо выполнить при наступлении события.
Мы задаем событие 'click', объектом задаем все теги a (крестик для удаления товара), по которым и происходит нажатие, а функцию, которая будет выполнена делаем такую.

Код:
    let col = document.querySelectorAll(".remove > a"); //вот мы выбираем все теги <a>
live('click', col, function(a){
    a.preventDefault(); //отключаем действие по-умолчанию на теге <a> (при нажатии происходит переход по ссылке)
    searchdel_item(a.target); //тут указываем вспомогательную функцию, которой передаем объект, на котором произошло событие (т.е. это наш тег)
    });

searchdel_item() вспомогательная функция делает следующее: поднимается по дереву от нашего тега <a> и ищет тег, в котором есть аттрибут varid с нашим id варианта товара. Когда функция находит varid, она через нашу функцию работы с api передает нашей системе ajax или xhr запрос следующего вида.
Код:
    let req = {
        class: 'cart', //здесь класс, который нужен для удаления товаров из корзины
        method: 'delete_item', //здесь метод
        args: {
            'id': id //ТУТ ВСТАВЛЯЕТСЯ НАШ ID ВАРИАНТА ТОВАРА!!!
        }
    };
  
    apiAjax(req, function(a){ //вот мы передаем параметры для запроса
        tr.remove(); //действие, которое выполняется, в случае успешного xhr запроса. Это удаляет строку с товаром со страницы
    });

api_ajax(data, success)
/*
* Эта функция для отправки особого POST запроса ajax к api системы
* 2 аргумента:
* data - объект с параметрами
* success - коллбек функция, которой будет вызвана после получения ответа сервера с передачей ей этого ответа
* пример: apiAjax(
* {'class': 'products', 'method': 'get_products', 'args':
* {'id': [1,2,3,4,5] }
* } , function(e){
* console.log(JSON.parse(e))
* });
*/


live(eventType, elements, event)
/*
* Функция аналог Jquery .live
* Предназначена для создания действия на событие
* eventType - (строка) тип события
* elements - HTML элемент или HTML коллекция, на которых должно срабатывать событие
* event - функция, которая будет выполнена при срабатывании события
*/
<-------------- добавлено через 853 сек. -------------->
Ого, вот это работа. Я даже не все понял, ну думаю колоссальный прорыв в перед ?
Стараюсь.

Можно не разбираться во внутреннем устройстве. Очень требуется тестирование, сейчас последняя версия доступна в виде дистрибутива.
Код:
https://github.com/legale/rapida/tree/master/distro
 
Выкладываю очередную версию, сделал вместе с дистрибутивом в связи с досадными недостатками в прошлой версии.
Для просмотра ссылки Войди или Зарегистрируйся

Обрисовался новый горизонт работ. Более или менее последовательная разработка сильно усложнилась. Проблема очень сложного кода в контроллерах встала ребром. Иногда из-за сложности существующего кода на само программирование уходит только 30% времени, остальные 70% уходят на разбор существующего кода. Время от времени сталкиваюсь с фронтендом, пока только админки. С моим никчемным опытом разработки UI, очень непросто сделать что-то на уровне хотя бы существующего интерфейса, но переделывать его все равно придется. Как минимум его нужно перетряхнуть от css до js. Мне кажется на это уйдет еще больше времени, чем написать все заново.

Как бы мне с этим поступить? Вчера прокликал с десяток разных frameworkов, от milligram до surface. К сожалению в них нет готовых элементов дизайна, чтобы повторить функционал существующей админки.

Что посоветуете сделать с этим?

# RAPIDA Ecommerce CMS
## SimplaCMS 2.3.8 fork


##IMPORTANT INFO
Для работы системы на сервере Nginx необходимо прописать следующую инструкцию в конфиг.
```
location / {
try_files $uri $uri /index.php$is_args$args;
}
```

## ****************
## Changelog
## ****************

## =================
## v0.0.8.1.3 14.12.2017
## =================
### bugs:
- Исправлена ошибка в features/get_product_options().
- Исправлена ошибка на странице каталога товаров в админке (справа не появлялись бренды).
- Устранена ошибка в настройках свойств товаров, когда после импорта не появлялись категории.
- Устранена ошибка в таблице s_users. Некоторые версии субд не позволяют иметь в 1 таблице 2 поля с настройкой default current_timestamp. В связи с этим у поля last_login изменено значение по умолчанию. Для изменений в базе необходимо выполнить запрос:
```
ALTER TABLE `s_users` CHANGE `last_login` `last_login` TIMESTAMP NULL DEFAULT NULL;
```
- В методе products->delete_image() добавлена проверка, что если удаляемое изображение имеет position 0, нужно удалить запись о нем из таблицы s_products. Там запись об изображении хранится для повышения быстродействия.
- Исправлена кривая ссылка в админке на иконке "Каталог".
- Начата работа по рефакторингу контроллеров админки. Первый контроллер ProductAdmin.php
 
Последнее редактирование:
Время от времени сталкиваюсь с фронтендом, пока только админки. С моим никчемным опытом разработки UI, очень непросто сделать что-то на уровне хотя бы существующего интерфейса, но переделывать его все равно придется. Как минимум его нужно перетряхнуть от css до js. Мне кажется на это уйдет еще больше времени, чем написать все заново.

Как бы мне с этим поступить? Вчера прокликал с десяток разных frameworkов, от milligram до surface. К сожалению в них нет готовых элементов дизайна, чтобы повторить функционал существующей админки.

Что посоветуете сделать с этим?
В поисках UI фреймворка под админку с горизонтальным меню, табами подразделов и боковым сайдбаром?
Или идея только косметически обновить существующую админку (убрать все изображения и перевести в CSS3, и может дополнить адаптивностью под мобильные устройства через медиа-запросы)
 
В поисках UI фреймворка под админку с горизонтальным меню, табами подразделов и боковым сайдбаром?
Или идея только косметически обновить существующую админку (убрать все изображения и перевести в CSS3, и может дополнить адаптивностью под мобильные устройства через медиа-запросы)

Проще даже, не нужен вообще сайдбар. Адаптивностью даже можно пренебречь. достаточно, чтобы просто нормально на мобильнике работал интерфейс.
Юзабилити у оригинальной админки симплы гораздо лучше, чем у аналогов (на мой вкус). Всякие исчезающие сайдбары со скролами и прочая дребедень может привлечь только неискушенного пользователя, как колхозника, который в автосалоне первый раз ламбо-двери увидел. :)

Нужен такой фрейм, который без проблем позволит одеть старую одежду на новый скелет. Разве что сделать еще совсем небольшой мейкап. Заменить обычные чекбоксы на нормальные переключатели, мультиселекты сделать посовременнее, да и достаточно, пожалуй. Идеально было бы, чтобы у этого фрейма был набор этих элементов.
 
Тут есть сходу пара вопросов. 1) почему не перейти на REST и делать все по принципу SPA? Плюсов уйма. По админке - почему не перейти на шаблонизатор twig? 2) почему не внедрить полноценный mvc? По теме админки посмотри в сторону inspiria
 
Доброго времени суток!
Скачал ваш дистрибутив с гитхаб версия rapida_0.0.8.1.3, выдает ошибку
Устанавливаю на локальном сервере система OS X EL Capitan сервер запускаю с помощью MAMP
Для просмотра ссылки Войди или Зарегистрируйся
 
Тут есть сходу пара вопросов. 1) почему не перейти на REST и делать все по принципу SPA? Плюсов уйма. По админке - почему не перейти на шаблонизатор twig? 2) почему не внедрить полноценный mvc? По теме админки посмотри в сторону inspiria

Поскольку api доступно по AJAX - можно будет сделать шаблон SPA.

С шаблонизатором TWIG не знаком. Что ты имеешь ввиду под полноценным MVC? Чем в симпле MVC неполноценный? Модели в api, контроллеры во view, а вьюшки - файлы шаблонов smarty tpl. Спасибо, посмотрю на Inspiria.

Первоначальный план был сделать быструю систему на базе симплы, уже сейчас разработка перешла в вопросы интерфейса админки больше, чем наполовину. Что бы я там не сделал, в лучшем случае это будет просто нормальная админка. Что там можно реально улучшить? А времени на это уходить просто колоссальное количество.

Хочу довести систему до состояния хотя бы бета версии, может тогда талантливые UIшники подключатся и что-то предложат.
<-------------- добавлено через 382 сек. -------------->
Доброго времени суток!
Скачал ваш дистрибутив с гитхаб версия rapida_0.0.8.1.3, выдает ошибку
Устанавливаю на локальном сервере система OS X EL Capitan сервер запускаю с помощью MAMP
Для просмотра ссылки Войди или Зарегистрируйся

Судя по тому, что удалось на скрине разглядеть - это не ошибка, это информация отладчика, который по умолчанию включен. Я еще не сделал нормальный редирект 404, поэтому в случае некорректного адреса просто белый экран и отладчик если он включен.

На макости я не запускал, этот твой MAMP - это apache совместимый сервер, или какой-то другой? Apache должен работать сразу после установки, файл .htaccess в дистрибутиве есть. Для работы на nginx нужно прописать простой конфиг. Всего 2 строки:
Код:
    location / {
        try_files $uri $uri /index.php$is_args$args;
    }

Дай нормальный скрин, на котором можно разгядеть буквы, может скажу что-то конкретнее. Если отладчик завелся, значит php работает, по сообщениям в нем можно разобраться.
 
paOHhZhW3Pkwzw
вот ссылка на скрин Для просмотра ссылки Войди или Зарегистрируйся
в файле nginx.conf вот его вид Для просмотра ссылки Войди или Зарегистрируйся
location / {
try_files $uri $uri /index.php$is_args$args;
}
прописывается в любом месте?
 
paOHhZhW3Pkwzw
вот ссылка на скрин Для просмотра ссылки Войди или Зарегистрируйся
в файле nginx.conf вот его вид Для просмотра ссылки Войди или Зарегистрируйся
location / {
try_files $uri $uri /index.php$is_args$args;
}
прописывается в любом месте?

прописывается в блоке server, вместо уже существующего блока location /

Судя по сообщению, у тебя все работает. Написано же please log in first! Т.е. прежде, чем идти в админку, надо авторизоваться админом. Авторизация осуществляется через обычный интерфейс авторизации пользователей по ссылке войти на странице сайта.


Это твой конфиг с записаной туда настройкой.
Код:
#load_module "modules/ngx_http_image_filter_module.so";
#load_module "modules/ngx_http_perl_module.so";
#load_module "modules/ngx_http_xslt_filter_module.so";
#load_module "modules/ngx_mail_module.so";
#load_module "modules/ngx_stream_module.so";

user                         nobody staff;
worker_processes             2;

events {
    worker_connections       1024;
}

http {
    include                   mime.types;
    default_type             text/html;
    gzip                     on;
    gzip_types               text/css text/x-component application/x-javascript application/javascript text/javascript text/x-js text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
  
    sendfile                 on;

    server {
        listen               7888 default_server;

        # MAMP DOCUMENT_ROOT !! Don't remove this line !!
        root                 "/Applications/MAMP/htdocs";

        access_log           /Applications/MAMP/logs/nginx_access.log;
        error_log            /Applications/MAMP/logs/nginx_error.log;

location / {
        try_files $uri $uri /index.php$is_args$args;
    }
  
        location ~* /MAMP([^-].*)$ {
            root             /Applications/MAMP/bin;
            index            index.php;

            location ~ \.php$ {
                try_files        $uri =404;
                fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI.sock;
                fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include          fastcgi_params;
            }
        }

        location ~* /phpMyAdmin(.*)$ {
            root             /Applications/MAMP/bin;
            index            index.php;

            location ~ \.php$ {
                try_files        $uri =404;
                fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI.sock;
                fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include          fastcgi_params;
            }
        }

        location ~* /phpPgAdmin(.*)$ {
            root             /Applications/MAMP/bin;
            index            index.php;

            location ~ \.php$ {
                try_files        $uri =404;
                fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI.sock;
                fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include          fastcgi_params;
            }
        }
      
        location ~* /phpLiteAdmin(.*)$ {
            root             /Applications/MAMP/bin;
            index            index.php;

            location ~ \.php$ {
                try_files        $uri =404;
                fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI.sock;
                fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include          fastcgi_params;
            }
        }
      
        location ~* /adminer(.*)$ {
            root             /Applications/MAMP/bin;
            index            adminer.php;

            location ~ \.php$ {
                try_files        $uri =404;
                fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI.sock;
                fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include          fastcgi_params;
            }
        }
      
        location /icons {
            alias /Applications/MAMP/Library/icons;
            autoindex on;
        }
      
        location /favicon.ico {
            alias /Applications/MAMP/bin/favicon.ico;
            # log_not_found off;
            # access_log off;
        }

        location ~ \.php$ {
            try_files        $uri =404;
            fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI.sock;
            fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include          fastcgi_params;
        }

        location ~ /\. {
            deny all;
        }

        # location ~* \.(gif|jpg|png|pdf)$ {
        #    expires          30d;
        # }

          # location = /robots.txt {
        #    allow all;
        #    log_not_found off;
        #    access_log off;
          # }

       # location ~* \.(txt|log)$ {
        #    allow 127.0.0.1;
        #    deny all;
          # }
        
          # location ~ \..*/.*\.php$ {
        #    return 403;
          # }

        location /nginx_status {
            stub_status      on;
            access_log       off;
            allow            127.0.0.1;
            deny            all;
        }
    }

    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
}
 
Назад
Сверху