Ответы пользователя по тегу Nginx
  • Почему низкая скорость при отдаче через кеширующий сервер (proxy_cache)?

    \.mp4 Простите а что это за файл такой интересный ? вы уверены что именно его хотели кешировать?
    один единственный файл .mp4 - ???
    А вот так бы выглядела маска для всех файлов оканчивающихся на mp4
    ~* ^.+\.mp4
    А вот так для перечилсения
    ~* ^.+\.(mp4|mp3)
    Ответ написан
  • Как разместить два сайта на одном домене, или ход конем?

    shambler81
    @shambler81 Автор вопроса
    всем спасибо сделал достаточно простото. прокся пхп, заменяю урлы на статику
    и на бэке сайт с ввв с исключением в редиректе на основное зеркало для определенного айпи.
    Ответ написан
  • Почему при использовании SSL доступен только homapge, landing, root server ip?

    listen 80 http2;
            listen [::]:80 http2
    ; - это как вы представляете себе такое http+http2 ? Это то-же самое что черный фашист.
    Ответ написан
  • Nginx proxy_pass для 2х локаций?

    proxy_pass 192.168.1.44/; вы поменяли на http:// 192.168.1.44; или нет ?
    А как вариант вообще сделайте через апстрим
    Я например дела вообще по другому
    я создаю домен
    dev.site.ru - на него вешаю пароль , и открываю его для своег айпи.
    В результате сайт я вижу и работаю даже без пароля если нужно показать то вот пароль, зашли посмотрели свалили.
    а слеш тест это не то кино
    Ответ написан
  • Как редиректить с www в catch all блоке, когда не используется server_name?

    зачем вы вообще используете default_server; ?
    На нем поставьте "здрасти этот сервер но что-то пошло не так"
    А для сайта сделай нормальный отдельный файл с отдельным

    server {
     listen *:80;
            server_name www.site.ru site.ru  ;
            root /var/www/site.ru/web;
    .........
    
     server {
     listen *:443;
            server_name www.site.ru site.ru  ;
            root /var/www/site.ru/web;
    .........
    Ответ написан
  • Не запускается nginx после обновления ssl сертификата. Что делать?

    1 зачем раз в месяц можно и чаще.
    2. зачем останавливать reload вполне хватает
    Ответ написан
  • В чем ошибка Let's Encrypt?

    To fix these errors, please make sure that your domain name was
    entered correctly and the DNS A/AAAA

    kurstudy.ru.            600     IN      AAAA    2a03:6f00:1::5c35:602e

    К чему бы это ?
    Ответ написан
  • Почему не работает перехват несуществующих доменов в NGINX?

    Уже отвечал сегодня на этот вопрос, и коллеги сказали что все уже давно работает а вам кажется
    Ключи вначале потом стулья
    listen 443 ssl;
           server_name default_server ;
           ssl_certificate        /etc/ssl/certs/ssl-cert-snakeoil.pem;
           ssl_certificate_key    /etc/ssl/private/ssl-cert-snakeoil.key;
           root /var/www/html;
           return 444;
    }

    Работает сайт по HTTPS версии IP. Как исправить?
    Ответ написан
  • Работает сайт по HTTPS версии IP. Как исправить?

    Господа не выдумываем велосипед
    Работа HTTPS в корне отличается от HTTP
    При обращение по http ты вначале получаешь имя сайта из отета сервера на основание этого имени подставляется конфиг.
    НО при HTTPS вы вначале получаете ключи, и только после этого множите получить хоть байт информации с канала.
    Как следствие этого два постулата:
    1. Если у вас есть хоть один сайт с https у всех остальных он появляется автоматически, хотите вы этого или нет, поскольку механизм разобра конфигов идет после установления канала, это фундоментально!
    Так что при обращение по IP вы в любом случае получите ключи https, поскольку это тупо демон на порту.
    2. Если нет пары ключей для именно этого домена, в частности IP будем считать как домен не имеющий явных ключей для себя. ТО от безвыходности веб сервер берет БЛИЖАЙШИЕ ключи сортируя их по имени то есть как правило это 000-default.conf
    В котором у вас лежат как-раз таки дефолтные ключи, может быть даже самоподписаные, НО только после этого у вас возможно получене http reffer.
    ну все что остается это завести ненужного товарищя в тупик
    например вот так.

    server {

    listen 443 ssl;
           server_name default_server ;
           ssl_certificate        /etc/ssl/certs/ssl-cert-snakeoil.pem;
           ssl_certificate_key    /etc/ssl/private/ssl-cert-snakeoil.key;
           root /var/www/html;
           return 444;
    }

    Но не пытайтесь ограничить сайт по именам до получения ключей это просо невозможно
    Намного проще сделать отдельный конфиг для этого айпи и уводить его в ловушку. чем ловить чего через default_server
    Ответ написан
  • Как в nginx подключать ssl если файл сертификата присутствует?

    server_name ~^(www\.)?(?.+)$; - это что за самодеятельность ? это ваще зачем?
    Во первых вы нарушаете философию самого nginx - сам создатель nginx не один раз говорил что !!!
    НАМЕРЕННО не вводил нормальное использование переменных в файлах конфигурации, поскольку куда как правельней 10 раз скопировать кусок файла нежеле забивать ее переменной, не обломится админ скопировать две строчки .
    И я вам могу сказать что он прав.
    2. Вы при генерации сайта все-равно какими-то средствами это делаете, ВЫ ЖЕ НЕ ПИШИТЕ ВСЕ РУКАМИ, ПРИ НАЛИЧИЕ МИЛЛИОНОВ ВЕБ ИНТЕРФЕЙСОВ?
    3. Если вам прям так не имется с проблеммой ввв, сделайте банально линку на папку c www,и не нужно изголяться.
    4. Работа с сертификатом и без него принципиально отличается, КАК МИНИМУМ тем что при обращению по http вначале получается имя домена а потом работа.
    ПО HTTPS вначале работают ключи а только после этого в этом канале можно получить хоть байт информации, включая имя сайта. так что не выдумывайте велосипед.
    Генерируйте конфиги для каждого сайта, а я бы еще рекомендовал отдельно для http и https в таком случае ошибка в одном из них не приводит к падению второго интерфейса.
    ну а дефолтный конфин нужно назвать 000-default... - где 000 говорит о том что он будет первым при выдачи ( посколкуь как я вам расписывал в пункте4 если сайт не имеет https о этом он физически может узнать только получив ключи, как следствие веб сервер возьмет " ближайшие" а сортировка у него именно по буквам ;) 00 просто первые ;)
    Ну и банальное удобство, разные сайты требуют доп изменений в конфигах.
    А следовательно куда в вашей модели их писать?
    Ответ написан
  • Как оптимизировать сервер под тяжелые скрипты с небольшим количеством пользователей?

    очень большая тема.
    В общем
    1. поставь bitrix vm - там 95% уже сделано
    увеличь время с 300 до 1500 в nginx и в принципе этого хватит.
    Ответ написан
  • Welcome to nginx - как попасть на сайт?

    1. какая веб морда
    2. какие демоны еще
    3. конфиги apache
    4. 0.0.0.0 - че за айпи такой?
    Ответ написан
  • BitrixVM. Push and Pull не работает. Сообщения не приходят в реальном времени. В чем проблема?

    вы включили его в консольной морде?
    как показывает практика это ... работает в папке www более уверенно чем в ext_www, особенно если у вас б24
    Ответ написан
  • Как сделать аналог nginx регулярного выражения через htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    <IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !/img.php?$
    RewriteRule ^(.*)$ /img.php? [L]
    </IfModule>

    как так, возможно еще нужно будет [L] заменить на [L,QSA]
    Ответ написан
  • Как сделать правильный редирект/конфиг htaccess при apache/nginx reverse-proxy?

    если nginx не уверен всегда должен отработать апачь, те же 404 и тп отрабатывает как правило сама cms а не nginx по этому мы выделим это в отдельное правило error_page 401 403 404 405 500 502 503 = @fallback;
    а трайфайл вообще не используем

    server {
    ######################################################################
    ## Server configuration
    ######################################################################
            listen *:80;
            server_name bots.klondike.digital www.bots.klondike.digital   ;
            root /var/www/bots.klondike.digital/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;
    
    ######################################################################
    ## Log configuration
    ######################################################################
    #Все логи отключены
            error_log /dev/null crit;
            access_log off;
    
    ######################################################################
    ## Errors send to apache2
    ######################################################################
    # у апача своих алиасов куча,  а так же некоторая статика отдается
    # средствамси php, по этому все ошибки обрабатывать только apache2
            error_page 401 403 404 405 500 502 503 = @fallback;
            location @fallback {
                    proxy_pass              http://127.0.0.1:82;
                    proxy_set_header        Host            $host;
                    proxy_set_header        X-Real-IP       $remote_addr;
                    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    
                    }
    
    ######################################################################
    ## 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|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/bots.klondike.digital/web;
                    access_log off;
                    expires max;
                    gzip_static on;
            }
    
    # default location
            location / {
                    index index.php index.html index.htm;
                    proxy_pass              http://127.0.0.1:82;
                    proxy_set_header        Host            $host;
                    proxy_set_header        X-Real-IP       $remote_addr;
                    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
           
    
    
    }
    Ответ написан
  • Почему не запускается nginx?

    expires 8d; - замени на expires max; - требования гугл пейдж спид.
    Теперь по пункткам
    1. journalctl -xe - вам уже написали
    2. nginx -t
    3. просо посмотри что в логе nginx
    Ответ написан
  • Механика работы proxy_connect_timeout?

    60 мало, тем более 3
    В прокси конект таймаут войдет и ответ сервера с той стороны, а следовательно и запрос в msyql
    Если ответа не будет за это время то вы увидите ошибку, и nginx дропнит это обращение в 500
    если же тянуть кота за ....
    то 1 вариант и второй может сильно загрузить один из бэк в следствие чего 3 явно мало, а в последнем случае равномерно нагрузить бэки для таймаута намного тяжелее и есле сервер не ответил за 3, то перейти на следующий в следствие этого при переключение клиент не заметит просадки, поскольк3 это не 60
    НО как я и говорил вы должны быть 100% уверены что за 60 и тем более 3 может выполнится тяжелый хит.
    В вашем случае есть вариант не выполнения тяжелого запроса за 3 секунды и он как дурак побежит по серверам в надежде получить хоть что-то, в результате даст 3 тяжелых хита на сервера и сдохнет.
    Ответ написан
  • Как исправить 504 Gateway Time-out?

    server {
    ######################################################################
    ## Server configuration
    ######################################################################
            listen *:80;
            server_name antar-dv.ru www.antar-dv.ru   ;
            root /var/www/antar-dv.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;
    
    ######################################################################
    ## Log configuration
    ######################################################################
    #Все логи отключены
            error_log /dev/null crit;
            access_log off;
    ######################################################################
    ## Errors send to apache2
    ######################################################################
    # у апача своих алиасов куча,  а так же некоторая статика отдается
    # средствамси php, по этому все ошибки обрабатывать только apache2
            error_page 401 403 404 405 500 502 503 = @fallback;
            location @fallback {
                    proxy_pass              http://127.0.0.1:82;
                    proxy_set_header        Host            $host;
                    proxy_set_header        X-Real-IP       $remote_addr;
                    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                    }
    
    ######################################################################
    ## 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;
                    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/antar-dv.ru/web;
                    access_log off;
                    expires 30d;
                    gzip_static on;
            }
    
    # default location
            location / {
                    index index.php index.html index.htm;
                    proxy_pass              http://127.0.0.1:82;
                    proxy_set_header        Host            $host;
                    proxy_set_header        X-Real-IP       $remote_addr;
                    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                                    }
    }
    
    server {
    
    ######################################################################
    ## Server configuration
    ######################################################################
            listen *:443 ssl http2;
                    server_name antar-dv.ru www.antar-dv.ru   ;
            root /var/www/antar-dv.ru/web;
    
    ######################################################################
    ## 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
    ######################################################################
            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/client40/web42/ssl/antar-dv.ru-le.crt;
            ssl_certificate_key /var/www/clients/client40/web42/ssl/antar-dv.ru-le.key;
            ssl_dhparam /etc/nginx/ssl/dhparam.pem;
    ######################################################################
    ## Log configuration
    ######################################################################
    #Все логи отключены
            error_log /dev/null crit;
            access_log off;
    
    
    ######################################################################
    ## 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;
                    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/antar-dv.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;
                            }
    }
    Ответ написан