Ответы пользователя по тегу Nginx
  • Как правильно сформировать запрос на чтение nginx-access.log?

    Все зависит что вы имеете в виду под словом сейчас ?
    Для этого вам понадобится
    tail -f будет выводить изменения, но опять же от тз.
    uniq -c - удаляет не уникальные строки и групирует их в числа.
    awk '{print $1}' access.log - выведет только айпи, соответственно $2 и так далее соответствующие колонки, так же их можно комбенировать $1$4
    Как вариант понадобится wc -l подсчет количества строк

    Например подсчет уникальныйх айпи во всем лог файле будет так
    awk '{print $1}' shop_access.log | uniq -c | wc -l
    Ответ написан
  • Как запретить по умолчанию все расширения для загрузки в nginx?

    эээ
    deny all; в основной локейшен
    А в частных случаях разрешающий по маске
    В чем проблемма то?
    Ответ написан
    Комментировать
  • Как написать динамический редирект nginx?

    \%20 - экранируешь спец символ получаешь то что тебе надо
    \+ - экранируешь плюс получаешь плюс
    Ответ написан
  • В каких случаях может не сработать regex "[^/]\.php(/|$)"?

    Разберем [^/]\.php(/|$)
    [^/]- начало строки НЕ начинается со / ( тут коллега был не прав это именно отрицание символа)
    \.php - экранирование точки то есть точка это как точка а не любой символ. ТО есть .php должно быть в урле
    (/|$) -или или вертикальная черта разделитель соответственно оканчивается или на / или просто без него.

    Но я бы всеже сделал более правильное выражение посколкьу регулярка подойдет и к такому урлу
    /.php/
    А это совсем не тру, хотя и имеет место жить.
    Как минимум я бы остановился на

    [^/].+\.php(/|$)
    .+- Как минимум 1 знак или символ там должен быть
    В результате регурярка имела бы значение следующее.
    /x.php/
    Но и это не все
    файл со слешем не бывает, и это не правильно так что
    [^/].+\.php&- тут будет соответствие тольок x.php что на мой взгляд более правильно.
    Ответ написан
    8 комментариев
  • Connection timed out after 15000 milliseconds?

    shambler81
    @shambler81 Куратор тега Linux
    нельзя выставлять столь длинные значения таймаута, смысл его тогда теряется.
    Стольо длинные хиты это явно или выгрузки или работа по апи.
    А следовательно наличие сервера с той стороны и доступности его не дело nginx
    а легко решается в самом скрипте обмена.
    Что же касается времяни то именно для этого скрипта можно сделать исключение позволяющее делать таймаут вплоть до -1
    Но при этом общая система не пострадает.
    Ответ написан
    Комментировать
  • Как сделать 301 редирект для всего сайта с http и www на https без www?

    ############################################################################
    #### Выбор основного зеркала (с www или без www)                        ####
    ############################################################################
        # 1. Удалить www
    RewriteCond %{ENV:HTTPS} on
        #Если включен https
    RewriteRule .* - [E=SSL:s]
        #То создаем переменную  ssl с текстом s
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
        # Проверяем, содержит ли домен www в начале URL.
    RewriteRule ^(.*)$ http%{ENV:SSL}://%1/$1 [R=301,L]
        # Перенаправляем удаляем www
    
        # 2. Добавить www
    #RewriteCond %{ENV:HTTPS} on
        #Если включен https
    #RewriteRule .* - [E=SSL:s]
        #То создаем переменную  ssl с текстом s
    #RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
        # Если нет www в начале домена
    #RewriteRule ^(.*)$ http%{ENV:SSL}://www.%{HTTP_HOST}/$1 [R=301,L]
        #Подставляем www и https если он включен.
    
    ############################################################################
    #### Перенаправляем протокол https на http                              ####
    ############################################################################
    #RewriteCond %{ENV:HTTPS} on
       # Проверяем наличие https в URL.
    #RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Перенаправляем протокол http на https                              ####
    ############################################################################
    #RewriteCond %{ENV:HTTPS} !on
       # Проверяем наличие https в URL.
    #RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
       # Перенаправляем протокол на http.
    Ответ написан
  • Apache или nginx?

    shambler81
    @shambler81 Куратор тега Linux
    NGINX+PHP-FPM
    Ответ написан
    Комментировать
  • Как реализовать docker nginx-proxy+(apache/nginx ?)+ssl+php7-fpm+mariadb?

    shambler81
    @shambler81 Куратор тега Linux
    для винды
    openserver
    для линукс
    vestacp
    ipsconfig3
    Ответ написан
  • Как создать свой ssl сертификат и заставить chrome доверять ему?

    Все просто самподписаный сертификат никогда не будет доверительным. Вы-ж его сами подписали ;) гыгы
    Вот так делать надо
    https://habrahabr.ru/post/318952/
    Ответ написан
    Комментировать
  • Как правильно настрить phpmyadmin?

    1. не фантастика отдельно настроенный виртуал хост, манов в интернете навалом, настроен именно на маску /phpmyadmin
    2. так же нужно учесть что последние версии phpmyadmin очень требовательны к версии php и давно уже требуют 7 версию, не факт что все сайты буду в состояние поддерживать новый релиз. Ну и по сути тут вообще ничего сложного.
    3. я так понимаю имелась в виду nginx+apache конфигруация.
    Ответ написан
  • 504 Gateway Time-out - nginx/1.10.2?

    сделайте исключение для данного файла в таймауте и значительно его увеличьте для него.
    Ответ написан
    1 комментарий
  • Настройка https на nginx + subdomen?

    Извените за тупой вопрос, а зачем статика то на субдомене у вас ведь nginx и смысла в этом попросту нет.
    Кроме ка постоянный геморой ?
    Теперь по всем доменам, тут все просто вам нужен другой ключик.
    Вы ведь их делаете ен самоподписаные надеюсь ?
    а что-то типа такого (тут писал под битрикс)
    https://klondike-studio.ru/blog/bitrix-virtualnaya...
    Если самоподписаные то толку от таких сертификатов примерно ноль.
    На вашем месте я бы сделал проще.
    nginx отдает нормальные урлы,
    stream {
          upstream stream_backend {
            zone tcp_servers 64k;
            server 192.168.55.201:3308;
            server 192.168.55.202:3308;
            server 192.168.55.203:3308;
        }

    все что вам останется прописать логику в локейшенах если вам прям так хочется отщдавать с другого сервера.
    В таком случае вам нужно будет только сертификат на фронт и все.
    НО вообще nginx может автоматически балансировать нагрузку на бэкэнды.
    что именго вам нужно от поддоменов, ведь вы по сути теряеете "вес" отдавая его субдоменам.
    Ответ написан
  • Нужно ли прописывать страницу ошибок в конфигурационных файлов обоих серверов, если веб-сервер работает в связке Apache + Nginx?

    ну это ваше дело
    я точно отрубаю аксесс лог в nginx ибо он мне не сильно интересен.
    А ерор лог врубаю толкьо при отладке.
    Ибо в него лезут все не найденые картинки и тд
    Тут надо смотреть что вы преследуете
    Меньше нагрузки - меньше логов
    Больше отладки - больше логов.
    Ответ написан
  • Возможно ли, что это ДДос и как бороться?

    shambler81
    @shambler81 Куратор тега Linux
    iotop -oka
    в СТУДИЮ
    Ответ написан
    Комментировать
  • Есть ли программа для редактирования конфигов nginx?

    perl -синтаксис
    Ответ написан
    Комментировать
  • Вопрос по конфигу Nginx и Apache. Как настроить поддомены?

    Если для всех сайтов 1 конфиг
    server {
                listen   80 default;
                server_name  _;
                server_name_in_redirect  off;
                resolver  127.0.0.1;
                error_page 404 = @fallback;
                #--------------Все 404  отдаем на обработку апача-------------------------------
                location @fallback {
                    proxy_pass http://$host:82;
                    proxy_set_header Host $host;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header X-Real-IP $remote_addr;
                }
                #--------------Статический контент отдаем на прямую-----------------------------
                location ~* ^.+\.(jpg|jpeg|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/$host/web;
                    access_log off;
                    expires 30d;
                }
                #--------------HTML Вывел отдельно посколку файлы могут быть динамические-------
                location ~* ^.+\.(htm|html)$ {
                    root /var/www/$host/web;
                    access_log off;
                    expires 30d;
                }
                # -------------Основнйо локейшен -----------------------------------------------
                location / {
                    root /var/www/$host/web;
                    index index.php index.html index.htm;
                    access_log      off;
                    proxy_pass http://$host:82;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header Host $host;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                }
                #-------------- Настройки для phpmyadmin----------------------------------------
                location /phpmyadmin {
                    root /usr/share/;
                    index index.php index.html index.htm;
                    location ~ ^/phpmyadmin/(.+\.php)$ {
                    try_files $uri =404;
                    root /usr/share/;
                    proxy_pass http://$host:82;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header Host $host;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                }
                location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                    root /usr/share/;
                }
                }
                location /phpMyAdmin {
                    rewrite ^/* /phpmyadmin last;
                }
                #------------- WEBMAIL----------------------------------------------------------
                location /webmail {
                    root /var/www/apps;
                    index index.php index.html index.htm;
                    proxy_pass http://$host:82;
                    proxy_set_header X-Real-IP $remote_addr;
                location ^~ /awstats-icon {
                    alias /usr/share/awstats/icon/;
                    access_log off;
                }
                location ^~ /awstatscss {
                    alias /usr/share/doc/awstats/examples/css/;
                    access_log off;
                }
                    location ^~ /awstatsclasses {
                    alias /usr/share/doc/awstats/examples/classes/;
                    access_log off;
                }
    }   # Закрывает весь server !!!


    Если конкретно у каждого свой
    server {
    #------- Server configuration---------------------------------------------------
    
            listen 80;
            server_name infoodessa.com www.infoodessa.com 176.31.8.150;
            root /var/www/infoodessa.com/web;
    
    #-------- Error page ----------------------------------------------------------
            error_page 404 = @fallback;
            location @fallback {
            proxy_pass http://infoodessa.com:82;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
    }
    #-------DEV--------------------------------------------------------------------
      error_page 555 = @pass;
            location @pass {
            auth_basic "Unauthorized";
            auth_basic_user_file /var/www/dev_htpasswd;
            proxy_pass http://infoodessa.com:82;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
    }
    
    # ------ Log configuration ----------------------------------------------------
            access_log off;
            #error_log /var/log/ispconfig/httpd/infoodessa.com/nginx_error.log error;
            #access_log /var/log/ispconfig/httpd/infoodessa.com/nginx_access.log combined;
    
    #------ static content --------------------------------------------------------
        location ~* ^.+\.(jpg|jpeg|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/infoodessa.com/web;
            access_log off;
             expires 30d;
    }
    #------ Locations configuration -----------------------------------------------
            # global locations
            # alias to local error docsinfoodessa.com www.infoodessa.com 
        location ^~ /error { root /var/www; }
    
        # default location
        location / {
            index index.php index.html index.htm;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://infoodessa.com:82;
            proxy_set_header Host $host;
    
    if ($http_host ~* "^(dev|old|www.dev)\..*\..{2,8}$"){
                    return 555;
                    }
                    if ($http_host ~* "^.*\.ks03\.ru$"){
                 return 555;
     }
    
    }
    #------- Directives configuration ---------------------------------------------
    #  для битрикс монитора
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options SAMEORIGIN;
    
     include /etc/nginx/locations.d/*.conf;


    Апачь висит на 82 порту

    <Directory /var/www/infoodessa.com>
            AllowOverride None
                    Order Deny,Allow
            Deny from all
        </Directory>
    <VirtualHost *:82>
    DocumentRoot /var/www/infoodessa.com/web
    ServerName infoodessa.com
    ServerAlias www.infoodessa.com
    ServerAlias www.109.74.130.76 109.74.130.76
    ServerAlias www.176.31.8.150 176.31.8.150
    ServerAdmin admin@rackster-server.ch
    ErrorLog /var/log/ispconfig/httpd/infoodessa.com/error.log
    
    Alias /error/ /var/www/error/
    <Directory /var/www/error/>
    Options +FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>
    ErrorDocument 400 /error/400.html
    ErrorDocument 401 /error/401.html
    ErrorDocument 403 /error/403.html
    ErrorDocument 404 /error/404.html
    ErrorDocument 405 /error/405.html
    ErrorDocument 500 /error/500.html
    ErrorDocument 502 /error/502.html
    ErrorDocument 503 /error/503.html
      <Directory /var/www/infoodessa.com/web>
       Options FollowSymLinks
       AllowOverride All
       Order allow,deny
       Allow from all
      </Directory>
    
      <Directory /var/www/clients/client2/web3/web>
       Options +FollowSymLinks
       AllowOverride All
       Order allow,deny
       Allow from all
       </Directory>
    
    
       <IfModule mod_suexec.c>
       SuexecUserGroup web3 client2
       </IfModule>
    
        # Clear PHP settings of this website
       <FilesMatch ".+\.ph(p[345]?|t|tml)$">
        SetHandler None
        </FilesMatch>
    
        # php as fast-cgi enabled
        # For config options see: http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
        <IfModule mod_fcgid.c>
        FcgidIdleTimeout 300
        FcgidProcessLifeTime 3600
        # FcgidMaxProcesses 1000
        FcgidMinProcessesPerClass 0
        FcgidMaxProcessesPerClass 10
        FcgidConnectTimeout 3
        FcgidIOTimeout 1600
        FcgidBusyTimeout 3600
        FcgidMaxRequestLen 1073741824
        </IfModule>
    
                        <Directory /var/www/infoodessa.com/web>
                                <FilesMatch "\.php[345]?$">
                    SetHandler fcgid-script
                </FilesMatch>
                FCGIWrapper /var/www/php-fcgi-scripts/web3/.php-fcgi-starter .php
                FCGIWrapper /var/www/php-fcgi-scripts/web3/.php-fcgi-starter .php3
                FCGIWrapper /var/www/php-fcgi-scripts/web3/.php-fcgi-starter .php4
                FCGIWrapper /var/www/php-fcgi-scripts/web3/.php-fcgi-starter .php5
                    Options +ExecCGI
                    AllowOverride All
                    Order allow,deny
                    Allow from all
                         </Directory>
    
                            <Directory /var/www/clients/client2/web3/web>
                                    <FilesMatch "\.php[345]?$">
                        SetHandler fcgid-script
                    </FilesMatch>
                                    FCGIWrapper /var/www/php-fcgi-scripts/web3/.php-fcgi-starter .php
                    FCGIWrapper /var/www/php-fcgi-scripts/web3/.php-fcgi-starter .php3
                    FCGIWrapper /var/www/php-fcgi-scripts/web3/.php-fcgi-starter .php4
                    FCGIWrapper /var/www/php-fcgi-scripts/web3/.php-fcgi-starter .php5
                       Options +ExecCGI
                       AllowOverride All
                       Order allow,deny
                       Allow from all
                         </Directory>
    
                  # add support for apache mpm_itk
                    <IfModule mpm_itk_module>
                            AssignUserId web3 client2
                    </IfModule>
            </VirtualHost>


    В данном варианте мног лишнего для тебя, но удалить удаллишь.
    В этом варианте используется апач + mod_fastCGI
    В твоем скорее всего просто мод апач, следоватлеьно покорче будет.
    Да и много исключений для phpmyadmin и всякая хрень типа сайт начинающийся с dev. имеет пароль по умолчанию, но это мелочи, удалить сможешь всегда.
    Ответ написан
    Комментировать
  • Как сделать редирект на https только основного домена, а поддомены оставить на http?

    как-то так
    RewriteCond %{HTTP} On
    RewriteCond %{HTTP_HOST} ^(www\.|)mysyte\.ru$ [NC]
    RewriteRule ^(.*)$ htts://mysyte.ru/$1 [R=301,L]
    Ответ написан
  • Отсутствует фал default в файлах nginx, как исправить?

    ЭЭ даже не знаю. Написать наверное ?
    у дефолта то по сути только две директивы отличаются от обычных.
    listen 80 default_server;
                    server_name _;

    Скопируй сайт поменяй на нем эту хрень. вот и все, ну и документ рут сам понимаешь.
    По server_name _; будут валиться все неразобраные
    Ответ написан
    Комментировать
  • Почему происходит всплеск нагрузки на процессор при запросе страниц сайта и как этот всплеск убрать или снизить?

    worker_processes 1; - поменяй на auto
    если у тебя больше чем 1.6
    это реальнно 1 воркер.
    Теперь по странице 99 % что это некешируемый тяжелый запрос в бд.
    В следствие чего у тебя проседает I-O в следствие чего идет пикообразный обвал производительности.
    В следствие чего сайт умирает или совсем или на время.
    Решение
    1 оптимизировать запрос в бд
    2. кешировать все живое ( не указал движок)
    3. iotop -oka во время работы странички ?
    4. че скрипт делает.
    5. Загрузка это сколько ? 1-10 хитов в сек или 10000 ?
    Ответ написан