Ответы пользователя по тегу Nginx
  • Как разместить одну страницу сайта на другом сервере?

    @rozhik
    Да, для этого есть несколько способов.
    1. редирект (При первом способе в браузере будет видна урл второго сервера, наверное не то, что Вам нужно)
    2. проксирование (первый сервер обратится к второму, и отдаст контент клиенту)
    В зависимости от вэб сервера реализации различные. Я вижу в теге nginx, по этому для него
    server { ...
        location test.html {
             proxy_pass http://backend;
      }
    }
    upstream backend {
       server http://10.0.0.2
    }
    Ответ написан
    1 комментарий
  • Nginx и PHP, как перенастроить с Apache?

    @rozhik
    1 глупый ответ
    rpm -e apache2
    rpm -1 nginx

    2. ответ по умнее. (если Вам нужны оба) В конфиге авача найдите listen: *:80 и поменяйте на 8080
    После этого они перестанут конфликтовать за порты
    Ответ написан
    1 комментарий
  • В чём преимущество асинхронных серверов перед PHP/nginx?

    @rozhik

    Такой вопрос: в чем основное преимущество асинхронных серверов ... перед связкой асинхронный сервер + любой язык
    ---
    перед связкой асинхронный сервер + любой язык - не совсем понятно, что Вы имеете в виду. Асинхронный сервер или нет, это одно, а вот асинхронный или нет доступ к данным у ЯП - это совсем другое. Я уверен, что Вас больше интересует второе.

    Вся прелесть, сложность и проблемы в асинхронном подходе возникают по одной и той-же причине. Результат на запрос приходит не сразу, а асинхронно. Это даёт огромное уменьшение времени отклика программы, если в ней используется результат нескольких не зависимых IO операций. Во всех остальных случаях синхронный подход проще, при таком-же времени доставки ответа. (IO - это работа с файлами, внешними api итп )

    Nodejs имеет один существенный недостаток - у неё один процесс выполнения. По этому тяжелые вычисления на ней значительно уступают в производительности PHP на многопроцессорных/ядерных системах. (это дело легко обходится воркерами итп, но это еще один недостаток)
    erlang, java и несколько других языков не имеют вышеуказанной проблемы.

    Nodejs по сравнению с PHP имеет еще 2 важных плюса:
    1. в ноде можно хранить данные, таймеры, дескрипторы итп между запросами. По этому это намного эффективнее различных механизмов кэширования PHP.
    2. в ноде не тратится время на подгрузку кода.

    >>В асинхронном сервере в единый момент времени обрабатывается столько запросов, сколько есть воркеров и в PHP/nginx точно также.
    Не верно, ни в первом ни во втором случае. В асинхронном сервере есть всего один поток, который обрабатывает любое количество запросов, в nginx - точно так-же. О PHP - другая история, но на каждый запрос нужен как минимум thread или process.

    Ответ написан
    1 комментарий
  • nginx: несколько хостов на один index.php

    @rozhik
    try_files $uri $uri/ $app_root/index.php?$args У файла нет параметров — по этому. Но никто не мешает поменять сие на try_files $uri php.
    Ответ написан
    Комментировать
  • Распределенное хранилище изображений

    @rozhik
    Я хочу предложить следующий вариант.

    Идея:
    0 опционально — поиск на локальной ФС
    1 создаётся хэш-функция от пути к картинке, возвращающая целое число. hashVal
    2. выбирается фронт сервер с номером hashVal % serversCount, и если он живой — стягивается картинка с этого сервера. если её нет — то генерится.
    3. если сервер не живой — берем следующий.и переходим к пункту 2.

    На практике такое решение ущербно по причине того, что после выхода из строя сервера — следующий сервер становится перегружен.
    В живом проэкте используется модификация:
    Есть 1000 записей в мэмкеше. Инициированых значениями из пункта 2. После падения фронт сервера его индексы меняются на индексы живых серверов случайным образом. После поднятия — восстанавливаются.
    (на самом деле чуть сложнее, так как каждая картинка живет всегда на 3х серверах, и доступ к ним балансируется каруселью, но это не важно для этого вопроса)
    Ответ написан
    Комментировать
  • Зависают запросы к Node через Nginx

    @rozhik
    В связке Nginx + нода, при правильной настройке проблем нет. И со статикой и с динамикой.

    Однако, если Вы опишите каким образом отдаётся статический контент через ноду, и кусок конфига nginx, то легче давать советы.
    К примеру статику на ноде отдаёт десяток разным модулей, какой из них Вы используете не известно.

    Судя по красивой минуте — отдача происходит по таймауту. Проблема может быть нодовском коде (что скорее всего), либо протокольной (к примеру после минуты ожидания закрытия потока — он закрывается автоматом).
    Ответ написан
  • Блокировка IP в nginx после определенного числа 404-ых запросов (подряд или в час)

    @rozhik
    Есть хороший модуль
    limit_conn_status 404
    Самплов много в гугле по диррективе.
    Ответ написан
    Комментировать
  • Доступ к серверу с СМС-авторизацией через nginx

    @rozhik
    Распишу подробнее.
    Итак имеем 2 недостатка 1) лишняя проверка на существование файла. 2) затраты на создание этого флаг файла и очистку.

    Идея здесь. Создаём хэш как
    $expire = time() + 3600; //Время, на которое даём доступ
    $hash = $expire.':'.md5($secret  . $expire); // Вот это шлём в куки значение
    


    Дальше в nginx на луа, перле или модулём делаем
    // Это псевдокод
    list( $expire, $md5 ) = explode( $cookieValue ); 
    if( $cookieValue == $expire.':'.md5($secret  . $expire) && $expire >= time() ) {
      // Авторизированы
    } else {
      // Не авторизированы
    }
    

    У вышеописаной идеи есть недостаток — нужно либо иногда обновлять куку, либо ставить длинное время жизни сессии. Но обращений к диску нет.
    Ответ написан
    5 комментариев
  • Доступ к серверу с СМС-авторизацией через nginx

    @rozhik
    Есть модуль secure link. Базируется на тривиальной идее. Почитайте о нем. Там подписуется кука на время.
    Ответ написан