Ответы пользователя по тегу Nginx
  • Чем защитить Nginx сервер от Ddos атак?

    зависит от конкретной задачи
    есил это разовая атака и идет прям сейчас то можно посмотреть по логам, как правило достаточно легко определить что за вид атаки и как ей противодействовать.
    Например по маске скидывать товарищей в 404, но это все индивидуально.
    Если же говорить о защите полноценной то нужно понимать что защита от ддоса может быть проедоставлена только мощьностями. и это типа Cloudflare а это денюшка.
    Ответ написан
    Комментировать
  • Почему редирект 301 срабатывает один раз?

    нет нельзя так делать.
    посколкьу не всегда он нужен.
    Вот полный алгоритм когда что должно быть.

    ############################################################################
    #### Убираем слеши в конце URL для статических файлов (содержит точку)  ####
    ############################################################################
    RewriteCond %{REQUEST_URI} \..+$
       # Если файл содержит точку.
    RewriteCond %{REQUEST_FILENAME} !-d
       # И это не директория.
    RewriteCond %{REQUEST_FILENAME} -f
       # Является файлом.
    RewriteCond %{REQUEST_URI} ^(.+)/$
       # И в конце URL есть слеш.
    RewriteRule ^(.+)/$ /$1 [R=301,L]
       # Исключить слеш.
    
    ############################################################################
    #### Добавляем слеш(/), если его нет, и это не файл.                    ####
    ############################################################################
    RewriteCond %{REQUEST_URI} !(.*)/$
       # Если слеша в конце нет.
    RewriteCond %{REQUEST_FILENAME} !-f
       # Не является файлом.
    RewriteCond %{REQUEST_URI} !\..+$
       # В URL нет точки (файл).
    RewriteCond %{REQUEST_URI} ^(.+)$
     # В URL есть хоть один символы
    RewriteRule ^(.*)$ $1/ [L,R=301]
      # Добавляем слеш в конце.


    Так что вам нужно пересмотреть свой конфиг в перую очередь.
    Ответ написан
  • Как с помощью Letsencrypt и Nginx получить сертификат - один домен с двумя IP адресами?

    1. Вариант
    синхронизируйте папку /var/www/acme между серверами, можно в принципе даже не париться и подмонтировать одну к другой через fstab
    2. Вариант в location /.well-known впишите прокси пасс на соседний сервер но поскольку может быть и тут и там, то
    не просто прокси а в 404 ошибку, в таком случае вы будите отдавать его локально, если 404 то оттуда .
    Или челез upstream.
    Ответ написан
    2 комментария
  • Что делать после настройки веб-сервера?

    shambler81
    @shambler81 Куратор тега Linux
    Линукс это конструктор, какой вам нужен мануал как пользоваться конструктором ?
    У вас есть детали и вам дали ман как они работают, а что вы хотите с этого собрать это уже ваша проблема.
    Ваше решение стоит в сборках. ( веб морды для управления веб серверами)

    Bitrix VM - отлично оптимизированно, ставится на любые виртуальные машины и чистый centos, в 1 нажатие.
    Имеет удобную консольную админку, прес 1 прес2 там и letsencrypt и backup и тд и тп.
    Vestacp - ставится так же одной командой, при инсталяции можно выбирать настройки.
    braynicp - большая может много ставится в 1 клик, не очень удобынй интерфейс, но функционала вагон и тележка.
    ispconfig3 - вот тут большие мануалы ;) вам понравится. Я пользуюсь ей просто кастомлю под себя.
    чистый веб свервер и просто файлы для редактирования не совсем удобны, хотя и имеют место быть.
    Ответ написан
    2 комментария
  • Связка для Wordpress на NGINX+PHP-fpm: Opcache, Memcached и Varnish. Стоит ли?

    fpm+nginx+opcache -самая быстрая связка.
    Рекомендованная
    nginx +apache+fpm
    memcached - медленней но умеет работать в кластерах, если кластер не нужен то opcache
    Ответ написан
  • Настройка Nginx proxy SSL?

    во всех манах в интернете есть ошибка по поводу проксирования HTTPS трафика на HTTP бэкэнда это не правильно и работать валидно на 100% никогда не будет, с той стороны есть js ajax и тд и тп которые не знают и не слышили о прокси по этому и бэк и фронт должны быть https
    Вот рабочий конфиг
    server {
    
    ######################################################################
    ## Server configuration
    ######################################################################
            listen *:443 ssl http2;
                    server_name 5job.ru www.5job.ru   ;
            root /var/www/5job.ru/web;
    ######################################################################
    ## Enable gzip for proxied requests and static files
    ######################################################################
        # Enable gzip for proxied requests and static files
        gzip on;
        gzip_proxied any;
        gzip_vary on;
        gzip_http_version 1.1;
        gzip_types application/javascript application/json text/css text/xml;
        gzip_comp_level 4;
    
    ######################################################################
    ## SSL configuration
    ######################################################################
    # recommended but not manditory directive
    # leave commented out unless you know what it is doing
    #more_set_headers 'Strict-Transport-Security: max-age=15768000';
            ssl on;
            ssl_session_cache  shared:SSL:10m;
            ssl_session_timeout 1h;
            ssl_protocols TLSv1.2 TLSv1.1;
            add_header Strict-Transport-Security "max-age=15768000" always;
            ssl_stapling on;
            ssl_stapling_verify on;
            ssl_prefer_server_ciphers on;
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK;
            ssl_certificate /var/www/clients/client26/web28/ssl/5job.ru-le.crt;
            ssl_certificate_key /var/www/clients/client26/web28/ssl/5job.ru-le.key;
            ssl_dhparam /etc/nginx/ssl/dhparam.pem;
    ######################################################################
    ## Log configuration
    ######################################################################
    #Все логи отключены
            error_log /dev/null crit;
            access_log off;
    
    ######################################################################
    ## 555 Еrror requires password password
    ######################################################################
    # Дев сайты закрыты htpass  login:dev pass:dev (второй кусок ниже)
            error_page 555 = @pass;
            location @pass {
                    auth_basic      "Unauthorized";
                    auth_basic_user_file    /var/www/dev_htpasswd;
                    proxy_pass              https://127.0.0.1:4443;
                    proxy_set_header        Host            $host;
                    proxy_set_header        X-Real-IP       $remote_addr;
                    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header        HTTPS           YES;
                    }
    ######################################################################
    ## Errors send to apache2
    ######################################################################
    # у апача своих алиасов куча,  а так же некоторая статика отдается
    # средствамси php, по этому все ошибки обрабатывать только apache2
            error_page 401 403 404 405 500 502 503 = @fallback;
            location @fallback {
                    proxy_pass              https://127.0.0.1:4443;
                    proxy_set_header        Host            $host;
                    proxy_set_header        X-Real-IP       $remote_addr;
                    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header        HTTPS           YES;
                    }
    
    ######################################################################
    ## Locations configuration
    ######################################################################
    #Отключаем логирование ошибок No such file or directory
    ## Disable .htaccess files
    
            location ~ /\.ht {
                    deny all;
    
                    access_log off;
                    log_not_found off;
            }
            ##
            location = /favicon.ico {
                    log_not_found off;
                    access_log off;
            }
            ##
            location = /robots.txt {
                    allow all;
                    log_not_found off;
                    access_log off;
            }
            ##
    ######################################################################
    # сервисы  на сайте phpmyadmin почта и letxencrypt
            location /phpmyadmin/ {
                    deny all;
                    # поставить пароль на phpmyadmin
                    return 555;
                    root  /usr/share/phpmyadmin/;
            }
            ##
            location /webmail/ {
                    rewrite ^/(.*)$ https://$http_host:8080/$1 permanent;
            }
            # letsencrypt
             location /.well-known/acme-challenge/ {
                    alias /usr/local/ispconfig/interface/acme/;
                    default_type text/plain;
    
             }
    # static content
    # Отдаем статику напрямую с nginx
            location ~* ^.+\.(jpg|jpeg|svg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|mp3)$ {
                    root  /var/www/5job.ru/web;
                    access_log off;
                    expires 30d;
                    gzip_static on;
            }
    
    # default location
            location / {
                    index index.php index.html index.htm;
                    proxy_pass              https://127.0.0.1:4443;
                    proxy_set_header        Host            $host;
                    proxy_set_header        X-Real-IP       $remote_addr;
                    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header        HTTPS           YES;
                    ######################################################################
                    ## Dev site Protection Requests in location /
                    ######################################################################
                    # Дабы дев сайты не индексировались поисковиками, принудительно
                    # Ставим пароли на них,  все что начинается с dev,old. или домен ks03
                            if ($http_host ~* "^(dev|old|www.old|www.dev)\..*\..{2,8}$"){
                                    return 555;
                                    }
                                    if ($http_host ~* "^.*\.ks03\.ru$"){
                                    return 555;
                                    }
    
                                    proxy_set_header X-Forwarded-Proto https;
                                    include /etc/nginx/locations.d/*.conf;
                    }
    }



    Далее повторяем уже для http
    Ответ написан
    Комментировать
  • Как можно переделать .htaccess под NGINX у самописного движка?

    shambler81
    @shambler81 Куратор тега htaccess
    нет смысла заморачиваться в 404.php
    запихни редиректы и все.
    дабы пыха их умеет делать легко и непренужденно
    а главное не засоряешь htaccess, пока урл не возник никто редирект не пытается обработать.
    Ну а редиректы типа ввв вы с легкостью найдете в интернете
    Ответ написан
    Комментировать
  • Как обрабатывать файлы с %-encoded именами в правиле rewrite в nginx?

    google page speed в оценке скорости сайта не использует те "ошибки" которые нашел на сайте.
    они имеют рекомендательных харрактер.
    Он оценивает среднюю скорость сайта в его тематике не больше ни меньше.
    Перевод в вебп вам ничего не даст в этом плане.
    Если бы его использование давало реальный прирост уже давно бы все сделали. ( сам формат чуда не делает как вы понимаете)

    Если вам действительно хочется ускорить
    1. берите vps с 9900k ( количеством мегагерц на ядро для сайта кудк принципиальней чем их количество)
    2. в россии ( если деньги на это есть) , ближе, быстрей работает.
    3. Переработаейте систему кеширования сайта в 99% она убога. и ускорить ее можно раз в 10-20
    Если она работает хорошо перепишите самые тяжелые запросы на чистый D7.
    И тд и тп.
    Поверьте веб п там будет на милионном месте.
    Ответ написан
    Комментировать
  • Как настроить nginx в роли ssl фронтенда для (apache)?

    1.правильно ли я понимаю что у вас nginx+apache
    2. Один или более сайтов у вас планируется?
    3. letsencrypt ? или платный сертификат ?
    4. dhparam - вы сделали ?
    5. Ту мени редирект говорит что у вас цикл, определите для начала что идет в цикле https://bertal.ru/
    ssl on;
            ssl_session_cache  shared:SSL:10m;
            ssl_session_timeout 1h;
            ssl_protocols TLSv1.2 TLSv1.3;
            add_header Strict-Transport-Security "max-age=15768000" always;
            ssl_stapling on;
            ssl_stapling_verify on;
            ssl_prefer_server_ciphers on;
            ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
            ssl_certificate .............;
            ssl_certificate_key ..............................;
            ssl_dhparam ..................;
    Ответ написан
  • NGINX перенаправление iframe c https на http или https на порту 8085?

    в последнее время отказался от iframe совсем
    на мойз взгляд это не больший костыль, зато обладает морем плюсов, такие как возможность работы с адаптивном и стрреплейсом а следоватлеьно и протокол можно тоже подменять ;)
    https://thisinterestsme.com/php-curl-proxy/

    ps.
    замени устаревший TSL, его уже не поддерживает crhome а сертификат понижают в классе с А+ до B
    ssl_protocols TLSv1.2 TLSv1.3;
     ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

    https://www.ssllabs.com/ssltest
    Ответ написан
    Комментировать
  • Почему все домены отдают контент с одного сайта (nginx+php-fpm)?

    shambler81
    @shambler81 Куратор тега Linux
    listen 80 default_server; че это ?
    Ответ написан
    Комментировать
  • Как правильно настроить редирект с $args?

    location / {
     if ($query_string ~ "(^|&)q\=($|&)"){
      if ($query_string ~ "(^|&)p\=([0-9]({1,})($|&)"){
        rewrite ^/$ /page/$2? redirect;
    }
      }
    }

    но тут использование if не сама лучшая идея
    Может вам имеет смысл в 404.php засунуть редирект на пыхе
    Во первых вы не потеряете в скорости поскольку редиректы будут срабатывать только если 404, соответственно не будут нагружать сервер в пустую
    Второе редиректы на пыхе проще чем на nginx
    Ответ написан
  • Как настроить связки nginx + apache и nginx + php-fpm на одном сервере?

    shambler81
    @shambler81 Куратор тега Linux
    у вас три файла
    1. общий который для неразобраных запросов по сути это мусорка, первый сайт на обычно висит на нем, но это неправильно поскольку это какраз таки ВСЕ домены то есть именно то что ведет здрасти вы на сервере.
    2. У вас два конфиа в которых прописаны явно хосты и в одном из них указан прокси, а во второ FPM
    3. У вас ssl выданы для каждого сайта, нельзя выдать ssl одному сайту ( специйфика подключения по SSL) если он есть хоть у одного сайта он появляется и у остальных. НО это отдельная тем.
    И так
    1. Удалите дефолтный конфиг он вам не нужен
    2. удалите дефолтный для ssl поскольку он будет только мешать
    3. выдайте клюии на каждый сайт
    4. Укажите проксми в одном файле
    5. Укажите FPM в другом файле
    6. если у вас конфиги для ssl вынесены в отдельные файлы
    например
    site1.ru_ssl.conf - то в них тоже измените все настройки.
    И все у вас будет работать
    Ответ написан
  • Как установить nginx после phpmyadmin?

    location /phpmyadmin/ {
                    deny all;
                    root  /usr/share/phpmyadmin/;
            }
    Ответ написан
    Комментировать
  • Как решить проблему nginx, выдает старый SSL сертификат?

    Правильно ли я понимаю что у вас битрикс ?
    У вас битрикс ВМ ?
    Если да то какая по версии, в зависимости от этого будет ответ
    Ответ написан
  • Как поднять свой хостинг на Freebsd?

    braynicp
    vestacp
    ispconfig3
    bitrixVM
    Поднимай на центосе или дебиане.
    Ответ написан
  • Nginx - не могу установить ssl сертификат, в чем проблема?

    ну здрасти а второй сервер по вашему висящий на вообще другом порту каким-то образом должен взять оставшиеся настройки с вообще левого сервера?
    будьте добры дописать все остальное, а еще лучше разнесите их в разные файлы дабы не смущять свой взгляд.

    ######################################################################
    ## SSL configuration
    ######################################################################
    # recommended but not manditory directive
    # leave commented out unless you know what it is doing
    #more_set_headers 'Strict-Transport-Security: max-age=15768000';
            ssl on;
            ssl_session_cache  shared:SSL:10m;
            ssl_session_timeout 1h;
            ssl_protocols TLSv1.2 TLSv1.1;
            add_header Strict-Transport-Security "max-age=15768000" always;
            ssl_stapling on;
            ssl_stapling_verify on;
            ssl_prefer_server_ciphers on;
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK;
            ssl_certificate /var/www/clients/client132/web171/ssl/3dpaneli.ru-le.crt;
            ssl_certificate_key /var/www/clients/client132/web171/ssl/3dpaneli.ru-le.key;
            ssl_dhparam /etc/nginx/ssl/dhparam.pem;

    ну а далее документ рут кто интерпретирует пхп и тд и тп servers не может брать настройки с другого srevers помоему это очевидно
    ну и ssl_dhparam нужно сделать
    Ответ написан
    Комментировать
  • Как правильно настроить nginx для нескольких сайтов с SSL на одном ip?

    1. самый логичный вариант поставить vtstacp ispconfig3 braynicp bitrix-vm на выбор и генерировать сертификаты в веб морде при создание сайта.
    2. поскольку сайт один а остальные сайты по факту alias то и генерировать их как alias
    -d syte.ru -d ya.ru -d vk.ru ...
    собственно сертификаты и будут выдаваться для каждого нового сайта.
    Можно на краяняк сделать скрипт который бы смотрел имена сайтов наличие А записи ведущей на этот сервер и запускал генерацию, недавно как-раз такой делал.
    как-раз для многосайтовости ;)
    Ответ написан
    Комментировать
  • Почему выходит ошибка при получении сертификата от Let's Encrypt?

    To fix these errors, please make sure that your domain name was entered correctly and the DNS A/AAAA - тут написана первая по распростроненности причина
    www.horijdaish.uz/.well-known/acme-challenge/UUNXN...
    Timeout during connect (likely firewall problem) - а это вторая возможно даже первая.

    И того
    удали ААА записи letsencrypyt не поддерживает ipv6
    ну и по каой-то причине летсенкрипт не может положить файлик.
    Ответ написан