Задать вопрос
Ответы пользователя по тегу Nginx
  • Зачем использовать nginx для статичных файлов?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Пришел момент задеплоить простенький учебный проект и начал гуглить как это сделать.

    Для учебного проекта вполне хватит реализации без Nginx (если это не обязательное требование), покажите Node.js проект преподу, получите оценку и забудете. А вот для реально рабочего проекта Nginx предлагает следующие преимущества:
    1. Обратный прокси с мощным функционалом из коробки.
    2. Быстрое кэширование, балансировка нагрузки и удобное масштабирование.
    3. Nginx быстрее и стабильнее, чем Node.js для статических файлов, что позволяет сильно оптимизировать расходы на серверную инфраструктуру.
    4. Огромное сообщество и множество мануалов для настройки, с множеством различных кейсов, под каждую, даже самую дикую задачу.

    Node.js можно заменить, например на Python или PHP - настройка Nginx практически не изменится. Затем сделать из Node.js, Python и PHP - 3 отдельный приложения, "связать одним Nginx" и... настройка Nginx практически не изменится.

    Рекомендую изучить - Why should I use a Reverse Proxy if Node.js is Pro...

    Benchmark:
    1*q0NSQmkY_-dQ_EbeJu5Rlw.png
    Ответ написан
    1 комментарий
  • Не запускается nginx на Ubunta?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Команда nginx -t вводит
    nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/openmediavault-webgui:33
    nginx: configuration file /etc/nginx/nginx.conf test failed

    А в какой строке и файле?

    Файл /etc/nginx/sites-enabled/openmediavault-webgui, строка 33, сообщает о том, что существует дубль конфига default server (duplicate default server for 0.0.0.0:80), такой конфиг может быть лишь один.

    Отредактируйте и сохраните файл с конфигом
    $ sudo nano /etc/nginx/sites-enabled/openmediavault-webgui
    , затем проверьте статус конфига nginx -t, если все ок, то перезагрузите nginx $ sudo systemctl reload nginx.
    Ответ написан
    2 комментария
  • Вредит ли http-код 499 (разрыв соединения по инициативе клиента) поисковой оптимизации?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Нет, 499 код не является стандартным кодом http (а является специфическим для nginx) и не влияет на seo.
    Ответ написан
    Комментировать
  • Как захватить все запросы с trailing slash на конце?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Работает?
    location ~ ^(.+)/+$ {
        ...
    }
    Ответ написан
    Комментировать
  • Как должен выглядеть location подмены картинок?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Можно заюзать алиасы:
    # /resize/422346/asjdhy37772jssh_500x500.webp > /home/bitrix/ext_www/images/resize/422346/asjdhy37772jssh_500x500.webp
    location /resize/ {
       alias /home/bitrix/ext_www/images/resize/;
    }

    А вообще, желательно проверять логи nginx по ~адресу /var/log/nginx/error.log.
    Ответ написан
  • Как заблокировать доступ к ресурсу для конкретного региона?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    GeoIP ngx_http_geoip_module

    1. Nginx должен включать модуль ngx_http_geoip_module.
    2. Качаем БД GeoLite2 Country.
    3. Пример конфига (nginx.conf), с отправкой всех из Индии в 403 лес:
    http {
        geoip_country /path/to/GeoLite2-Country.mmdb;
        map $geoip_country_code $allowed_country {
            default yes;
            IN no; # banned india
        }
    }
    
    server {
        if ($allowed_country = no) {
            return 403;
        }
    }
    Ответ написан
    5 комментариев
  • Как настроить нагрузоспособность Nginx из расчета процессоров для стабильной работы?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Как настроить нагрузоспособность Nginx из расчета процессоров для стабильной работы?

    Т.к. четкого ТЗ не указано, то выдумаю свой конфиг, с 4 ядрами и 8 гигами оперативы, тогда следующие действия:

    Передадим параметры железа nginx-у, nginx.conf:
    worker_processes  4; # cores
    events {
        worker_connections  1024; # 1024 * 4 ram = 4096 (max all rps)
    }


    Настроим ограничения так, чтобы каждый ip мог делать не более 10 rpm (в минуту), nginx.conf:
    http {
        limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/m;
    
        server {
            location / {
                limit_req zone=mylimit burst=20 nodelay; # we put no more than 20 requests in the queue over the limit (anti DDoS)
            }
        }
    }

    Эти настройки помогут контролировать общую нагрузку на сервер и предотвратят его перегрузку за счет ограничения количества обрабатываемых запросов как в целом (через worker_connections), так и на уровне отдельных IP-адресов (через limit_req_zone и limit_req). Это эффективный способ защиты от спама и DDoS, а также обеспечивает равномерное распределение ресурсов сервера между всеми пользователями.
    Ответ написан
    Комментировать
  • Как ограничить количество выделяемой оперативной памяти на каждый проект nginx?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    В целом вопрос стоит именно в разделении проектов, чтобы один проект не влиял на другой и при сильной нагрузке выдавал ошибку или падал, только как кластер возможно, или микросервис.

    Вы прям написали часть того - "зачем нужен Docker".

    для оптимизации сервера и балансировки нагрузок помимо написанного выше

    Вы прям написали часть того - "зачем нужен Kubernetes".

    при сильной нагрузке выдавал ошибку или падал

    Может не стоить рубить с плеча, а просто поставить ожидающих в очередь?
    Ответ написан
    Комментировать