Ответы пользователя по тегу Nginx
  • Какие подходы используются сейчас при построении веб-серверов?

    shambler81
    @shambler81 Куратор тега Linux
    И так что вам понадобится.
    1. поскольку разные движки и особенно старые вам нужно от хостинга
    а) php5.2(если реально для него что-то есть) php5.3 php5.4 php5.6 php7.0 php7.1 php7.1 php7.2 php7.3 php7.4 - FastCGI или mod_apache, при этом 5.2-5.3 компилить прийдется уже их тарболов, поскольку в репках их нет
    б) php7.0 php7.1 php7.1 php7.2 php7.3 php7.4 - PHP-FPM - эти со всеми видами представлений одной командой.
    в) nginx +apache - поскольку в старых сайтах переписывать .htaccess на чичтый nginx+FPM это маразм.
    г) сказал бы что virusdie подключеный на каждый сайт, но они сделали ребрендинг и подняли цену в 100 раз так что не увольте.
    однако делать с виурсами что-то нужно
    так что
    будем делать с вирусами
    1. su_exec вкл выкл для сайта - запрещяет функцию exec для старых сайтов она как правило не нужна.
    2. опен бейс дир смысла ставить нет.
    3. нужна моментальная система отката для старых сайтов, возможно просто накатывать бэкап раз в месяц ( если сайты уже статичны) это дешевле чем разбираться с каждым из них постоянно.
    4. Взять большое файловое хранилище или яндекс облако или hetzner там дешевые 10 тб хранилищя, примонтировать их через clifs и бэкапить туда все раз в месяц, удалять раз в 5 лет, тоже по крону.
    отдельно папку для почищены от вирусов сайто которая лежит всегда, и если сайт по какой-то причине просрался то нужно чтоб был ооочень старый бэкап помима обычных. Желательно где-то еще.
    5. старым сайтам должна быть возможность отключить почту, это можно сделать через настройки апача, главное в морду вывести.
    что-то вроде
    disable_functions=exec,passthru,shell_exec,system,proc_open,popen,curl_multi_exec,parse_ini_file,show_source,mail,apache_child_terminate, apache_setenv, define_syslog_variables, escapeshellarg, escapeshellcmd, eval, fp, fput, ftp_connect, ftp_exec, ftp_get, ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist, highlight_file, ini_alter, ini_get_all, ini_restore, inject_code, openlog, passthru, php_uname, phpAds_remoteInfo, phpAds_XmlRpc, phpAds_xmlrpcDecode, phpAds_xmlrpcEncode, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, syslog, system, xmlrpc_entity_decode, mail

    так же было бы неплохо собирать в лог файл какие конкретно файлы отправляют спам и с какой строки, поскольку это постояннго будет причиной бана адерсов, так что за этим нужно будет следить.
    mail.add_x_header = On
    mail.log = syslog
    В этом сулчае прям в сислог, но можн ои в отдельный файл, ну и в мониторинг его .
    Так же нужно будет следить за очередью почты, при резких пиках нужно будет реагировать.

    Возможно понадобятся curl mpdf zend_optimizer (php 5.2) zend guzrd_loader ( 5.3) ioncube.
    и тому подобные специические темы.

    лично я собираю все это на ispconfig 3
    плюс модуль nginx, плюс своя кастомка.
    600 сайтов полет нормальный.
    Так же было бы неплохо подключить какой-то антивирус и сканить систему что-то типа ai-bolit.php или веб серисы.
    НО у вас точно должна быть функция быстрого отката,а для совсем древиних сайтов так и по крону можно их ломают так часто что все вышесказанное мало поможет.
    для особо жопных сайтов можно перевести их в html
    хостинг должен поддерживать letsencrypt а так же нужно мониторить что сертификаты могут выдаться, как правило в 99% панелей если хоть один из сертификатов не выдался не выдадутся и остальные.

    Могу предожить vestacp
    braynicp
    biyrix vm
    все они ставятся с одного клика, у каждого есть свои плюсы и минусы.
    Ну или как вариант
    у яндекс в kubernetas есть возможность вобще бесплатно хостить html сайты, а для php сделать впс, там и бэкапы слайсов можно делать, и примонтировать местное храниллище.
    Ответ написан
  • Hosting to Hosting Редирект. Уменьшить расходы?

    по моему очевидный ответ у вас на сервере стоит nginx
    собственно он проксирует на бэк в henzner вот и все айпи у вас местный а сервер только проксирует. Пойдет любая помойка.
    А как сделать nginx в режиме proxy можете найти по первой же ссылке, его в 50% случаев так и используют.
    Там и балансеры и все че хочешь есть
    и да будет видно что nginx проксирует, но простите nginx+apache конфигурация сейчас самая популярная и он там тоже проксирует.
    А какой апстрим локальный или внешний узнать нереально. единственное во всех манах в интернете ошибка, уж не знаю какого ляда. Но проксируйте http-http https-https а не на http.
    Ответ написан
    1 комментарий
  • Нужно ли настраивать FastCGI?

    shambler81
    @shambler81 Куратор тега Linux
    лучше всего сделать PHP-FPM это тот же FastCGI но немного быстрей и главное он отдает статусы процессов апачу.
    Что касается настроек то особо улучшить производительность относительно стоковых вы не сможете там плюс минус 10% в производительности так что можно сказат что нет не нужно настраивать.
    Ответ написан
    Комментировать
  • TO_MANY_REDIRECTS при включении редиректа на https?

    https://klondike-studio.ru/standards/standartnyy-h...
    писал тут как сделать.
    Причина в том что все маны а как следствие и сервера в мире настроены с ошибкой и host при nginx+apache не сохраняется
    а заменяется и в результате этой дебильной схемы страдает js которому нужно знать на каком протоколе сейчас он находится, ну и редиректы поскольку хост не соответствует тому что нужно, в результате опять срабатывает правило редиректа.
    Короче все что вам нужно это подобрать редирект кторый подойдет на вашей конфигураци.
    Примеры я дал в ссылке
    ЧПУ битрикса разместить в самом конце
    Ответ написан
    1 комментарий
  • Раздельные пользователи для сайтов. Правильно ли я настроил nginx?

    shambler81
    @shambler81 Куратор тега Linux
    не не достаточно. В таком раскладе получается что если вирус поразит один из сайтов то ему хватит прав заразить и остальные.
    я разделяю все сайты даже одного клиента на разных владельцев и групп.
    В таком раскладе исключается даже теоретическая возможность поражения 1 вирусом двух сайтов ( в смысле через один доступ)
    А так же некоторым сайтам требуется разная версия окружения, от версии php до вида его представления. И даже веб сервера на котором это счастье болтаетя. именно по этому рекомендую вам все-же использовать панели
    Поскольку они хорошо убирают человеческий фактор из управления.
    Если же вам хочется поковыряться и разобраться то вам идеально подойдет ispconfig3 ( чем и и пользую) ( установка по ману)
    оч удобно.

    Если же не хочется паритьс но чтоб все работало то
    Bitrix VM - подойдет для любых сайтов ставится с 1 скрипта
    vestacp - ставится с 1 скрипта, при инсталяции есть выбор варианта сборки, так же в 1 скрипт.
    braynicp - дохрена умеет, реально дохрена неудобоный интерфейс проприетарная лицензия (но бесплатная). Но сап адекватный.
    Ответ написан
  • Чем защитить 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 сертификат?

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