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

    Что не нравится Nginx?


    nginx не нравится, что Вы подсунули ему неправильный файл сертификата cert.crt, правильный должен иметь примерно такой вид (многострочный):

    -----BEGIN CERTIFICATE-----
    MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
    ................
    ................
    JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
    Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
    -----END CERTIFICATE-----


    Сделайте:

    openssl x509 -in /etc/ssl/certs/domains/sea3.ru/cert.crt -noout -text -purpose


    Если файл сертификата корректный, то вы увидите всю информацию о сертификате, иначе будет ошибка.
    Ответ написан
    Комментировать
  • Переадресация по доменным именам NGINX?

    Когда захожу в конфиг GNIX на 192.168.0.2, там 2 файла и вот что там прописано:


    Вы что-то не договориваете или не понимаете и пишите не полную информацию.

    Где это сервер (192.168.0.2) на вашей картинке?
    Откуда все таки вы взяли конфиг nginx, с какого сервера? По моему это конфиг с сервера виртуального сервера 10.102.10.32, потому что его IP фигурирует.

    У вас на картинке есть роутер, если я правильно понял внешний динамический IP от провайдера получает именно он и на нем же ddns.
    Тогда вопрос: Какие правила редиректа подключений на 80 порт есть на этом роутере?
    Ответ написан
  • Почему медленно работает сайт?

    listen = 127.0.0.1:9001


    1. Используйте unix socket, это увеличит скорость работы связки nginx + php-fpm

    Пример пула php-fpm:

    [site.ru]
    listen = /var/lib/php5-fpm/siteru.sock
    listen.owner = site
    listen.group = site
    listen.mode = 0660
    ...


    Пример настройки nginx:
    location ~ \.php$ {
      ...
      fastcgi_pass unix:/var/lib/php5-fpm/siteru.sock;
      ...
    }


    pm = ondemand


    2. Используйте модель dynamic, при ondemand скорее всего вы упираетесь в pm.max_children

    Пример для dynamic:

    pm = dynamic
    pm.max_children = 10
    pm.start_servers = 2
    pm.min_spare_servers = 1
    pm.max_spare_servers = 5
    pm.max_requests = 500


    3. Включите лог медленных запросов на mysql, включите дебаг в yii2, включите отладочные логи на php-fpm

    Пример включения отладочных логов для php-fpm:
    ; Перенаправлять вывод процесса в лог
    catch_workers_output = yes
    ; Если скрипт выполняется больше указанного времени, писать отладочную информацию в slowlog
    request_slowlog_timeout = 3
    ; Лог-файл для медленных запросов
    slowlog = /var/log/fpm-php/siteru.slow.log
    Ответ написан
    Комментировать
  • Большое количество сайтов на nginx?

    В консоле сервера:

    Проверим soft limit:
    # ulimit -Sn

    Проверим hard limit:
    # ulimit -Hn

    Если мало, то динамически изменим текущие лимиты:
    # ulimit -n 65525

    Теперь добавляем лимиты в файлы настроек, чтобы при старте системы они выставились какие нам нужны:
    В файле /etc/security/limits.conf дописываем:
    * soft nofile 65525
    * hard nofile 100000
    nginx hard nofile 65000

    Теперь меняем лимиты в nginx, для этого в файле /etc/nginx/nginx.conf в самом начале, примерно после строк
    user www-data;
    worker_processes auto;
    пишем
    worker_rlimit_nofile 65000;

    В консоле:
    # nginx -t && nginx -s reload
    Ответ написан
    Комментировать
  • Как правильно настроить alias на Nginx, чтобы работал php?

    Если я правильно понял вашу хотелку, то может так:

    ...
            location /aaaa {
                    root /var/www/aaaa;
                    index index.php index.html index.htm;
                    location ~ (.+\.php)$ {
                           try_files $uri = 404;
                           root /var/www/aaaa/;
                           include /etc/nginx/fastcgi_params;
                           fastcgi_pass unix:/var/lib/php5-fpm/aaaa.sock;
                           fastcgi_index index.php;
                           fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                    }
            }
    ...
    Ответ написан
  • Почему не работает map в nginx?

    Думаю Алексей Виноградов хочет сделать красивый конфиг nginx для работы WP Super Cache без горы if, как во многих статьях типа этой, что похвально, т.к. If is Evil

    Но судя по всему в map у nginx для нескольких значений регулярка не работает, поэтому ни так ~* ни так ~(.*) и ни так ~^(.*)$ работать не будет.

    Но я бы позвал сюда эксперта по nginx, чтобы он авторитетно либо подтвердил мою догадку, либо опроверг.
    Ответ написан
    Комментировать
  • Как решить проблему с SSL?

    Если верить nslookup, то IP адрес с вашего скрина не совпадает с данными из DNS => что сайт открывается не с вашего сервера => там левый ssl сертификат

    # nslookup portal.tggroup.kz
    Server:         127.0.0.1
    Address:        127.0.0.1#53
    
    Non-authoritative answer:
    Name:   portal.tggroup.kz
    Address: 178.62.251.156
    Ответ написан
    9 комментариев
  • Какие прорехи в безопасности могут быть в конфигурации nginx?

    1. Постоянный редирект с / на index.php

    location = / {
            rewrite ^ $scheme://$host/index.php permanent;
        }
    
        location / {
            deny all;
            return 404;
        }
        location ~* ^/index\.php$ {
            try_files $uri $uri/ =404;
            fastcgi_index index.php;
            fastcgi_pass php5-fpm-sock;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
        }



    Очень странная логика, особенно использование $host и некорректное использование try_files. Про try_files почитайте тут.

    $host
    в порядке приоритета: имя хоста из строки запроса, или имя хоста из поля “Host” заголовка запроса, или имя сервера, соответствующего запросу


    Если у вас не определен default_server и server_name site.ru; стоит первым в списке, то к вам будут прилетать все запросы с любым полем Host, в том числе пустым, что является очень опасной практикой.
    Лучше использовать переменную $server_name, но все равно, если вам нужно обращения по любым url обрабатывать только через index.php, то правильно это делается так:

    /NONEXISTENTFILE меняете на заранее фейковый файл который не может существовать, например /d7sdhsdhsdf8sfhgsfd8fh438dfjh

    ...
            error_page 404 = @cms;
    
            location / {
                try_files /NONEXISTENTFILE @cms;
            }
    
            location @cms {
                    fastcgi_pass      unix:/var/lib/php5-fpm/xxxxx.sock;
                    fastcgi_index    index.php;
                    fastcgi_param   SCRIPT_FILENAME $document_root/index.php;
                    fastcgi_param   SCRIPT_NAME /index.php;
                    include             /etc/nginx/fastcgi_params;
            }
    ...


    2. Запрещаем любую статику кроме gif|jpg|png|js|css|ttf|woff|ico
    location ~* \.(gif|jpg|png|js|css|ttf|woff|ico)$ {
            try_files $uri =404;
            expires 30d;
        }



    Логичнее и правильнее будет сделать так:

    try_files $uri =404; нам не понадобится, т.к. у нас есть error_page 404 = @cms; который в случае отсутствия картинки перенаправит запрос в @cms

    ...
            error_page 404 = @cms;
    
            location ~* ^.+\.(gif|jpg|png|js|css|ttf|woff|ico)$ {
                    expires 30d;
                    access_log off;
                    log_not_found off;
            }
    
            location / {
                try_files /NONEXISTENTFILE @cms;
            }
    ...


    По поводу json.php и в принципе ограничения доступа, правильнее делать это через map или geo, например так:

    http {
    ....
            geo $my_client_ip $denied {
                    default 1;
                    127.0.0.1 0;
                    XX.XX.XX.XX 0; # <- IP1 с которого можно заходить
                    YY.YY.YY.YY 0;    # <- IP2 с которого можно заходить
            }
    
    server {
            listen       443 ssl;
            server_name  site.ru;
            root         /var/www/html/;
    ...
            set $my_client_ip $remote_addr;
            if ($http_x_forwarded_client_ip ~ "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}") {
                    set $my_client_ip $http_x_forwarded_client_ip;
            }
    
            error_page 403 = @deny;
    
            location @deny {
                    root /var/www/deny;
                    rewrite ^(.*)$ /index.html break;
            }
    
            location ~* ^/json\.php$ {
                    if ($denied) {
                            return 403;
                    }
                    try_files /NONEXISTENTFILE @json;
            }
    
            location @json {
                    try_files       $uri = 404;
                    fastcgi_pass    unix:/var/lib/php5-fpm/xxxxx.sock;
                    fastcgi_index   index.php;
                    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                    include         /etc/nginx/fastcgi_params;
            }
    
    }
    }


    4. Разрешаем доступ к /admin только с 1-го IP, для /admin/phpmyadmin


    Не делайте так! Организуйте для phpMyAdmin отдельный поддомен с отдельным виртуальным сервером и отдельной обработкой php5-fpm через отдельный сокет.
    Никогда не храните "левые" (вспомогательные) утилиты в общем каталоге web-приложения, это плохая практика. К примеру: Если в phpMyAdmin будет найдена критическая уязвимость, то даже в случае ограничения доступа к нему с определенного IP существует вероятность, что она может быть проэксплуатирована и тогда через неё поломают ваше web-приложение - оно вам нужно?

    По поводу location ~* /admin/ аналогично как для json.php.

    Ну и все рекомендации выше от Кирилл Несмеянов относительно hsts, ssl, ciphers, dh, ocsp stapling поддерживаю.
    Ответ написан
    4 комментария
  • [Wordpress] Как изменить wp-admin на другой адрес с nginx?

    Вообще если честно, то блокировка админки WordPress базовой аутентификацией или смена её местоположения - это глупость.
    Куда надежнее использовать двух факторную аутентификацию, fail2ban для блокировки попыток доступа к админке с ошибочными паролями, обязательно HTTPS и конечно же самое главное - надежные пароли.
    Ответ написан
    1 комментарий
  • Как правильно организовать балансировку нагрузки?

    Если Вы уверены, что Web-приложение справляется с нагрузкой, то возможно на балансировщике стоит увеличить таймауты, добавьте в location /

    proxy_connect_timeout 120s;
    proxy_send_timeout 120s;
    proxy_read_timeout 120s;


    На 3-х вебсерверах если Вы используете php-fpm то лучше работать через unix-сокеты, а не через tcp, через сокеты будет быстрее.

    Возможно стоит посмотреть в сторону параметра least_conn в upstream, то есть запросы сначала будут отправляются бэкенду с наименьшим количеством активных подключений (но с учетом весов). Подробнее тут.
    Если какой-то бэкенд мощнее других, то используйте определение веса через weight
    Так же настройте директивы max_fails и fail_timeout в блоке upstream (в моем примере ниже параметры проставлены для примера).

    Так же включите логи на балансировщике, это сильно упростит отладку:

    http {
        ...
        log_format upstream_log '[$time_local] $remote_addr - $remote_user - $server_name to: $upstream_addr: $request upstream_response_time $upstream_response_time msec $msec request_time $request_time';
    
    upstream servers {
                    least_conn;
                    server ip1;
                    server ip2 max_fails=3 fail_timeout=30s;
                    server ip3 max_fails=5 fail_timeout=30s;
                    keepalive 16;
            }
    
    server {
                    listen 80;
                    access_log /var/log/nginx/servers-access.log upstream_log;
                    error_log /var/log/nginx/servers-error.log debug;
    
                    location / {
                            proxy_pass http://servers;
                            proxy_http_version 1.1;
                            proxy_set_header Connection "";
                            proxy_connect_timeout 120s;
                            proxy_send_timeout 120s;
                            proxy_read_timeout 120s;
            }
    }
    Ответ написан
    Комментировать
  • Nginx не проксирует на удаленный хост?

    Что мешает обратиться к официальной документации с примерами настроек, а не городить огород?

    https://github.com/ONLYOFFICE/document-server-prox...

    У меня в одном проекте проксирование HTTPS-to-HTTPS на Nginx настроено так:
    http {
    
            # Websocket
            map $http_upgrade $connection_upgrade {
                    default upgrade;
                    ''      close;
            }
    
    server {
    ...  
              lingering_time 86400;
              proxy_ssl_verify off;
              proxy_ssl_session_reuse on;
              proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
              proxy_cache off;
              proxy_store off;
    
              set $ssl off;
              set $port 80;
              if ($scheme = https) {
                  set $ssl on;
                  set $port 443;
              }
    
            location / {
                proxy_pass https://192.168.XX.XX:8443/;
                gzip off;
                proxy_read_timeout          600s;
                proxy_connect_timeout       600s;
                proxy_redirect              off;
                proxy_buffering             off;
                proxy_request_buffering     off;
                proxy_http_version          1.1;
                proxy_set_header Host                   $http_host;
                proxy_set_header X-Real-IP              $remote_addr;
                proxy_set_header X-Forwarded-Ssl        $ssl;
                proxy_set_header X-Forwarded-For        $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto      $scheme;
                proxy_set_header X-Forwarded-Port       $port;
                proxy_set_header X-Frame-Options        SAMEORIGIN;
                proxy_set_header Upgrade                $http_upgrade;
                proxy_set_header Connection             $connection_upgrade;
                proxy_set_header Referer "";
            }
    }
    }
    Ответ написан
    7 комментариев
  • Nginx сайты на одном ip?

    1. Для понимания того как Nginx обрабатывает запросы обязательно почитайте это
    2. Так же обязательно определите default_server, например в файле /etc/nginx/conf.d/fallback.conf (путь может меняться, см. include в nginx.conf) можно написать:
    server {
            listen XX.XX.XX.XX:80 default_server;
            server_name _;
            return 444;
    }

    default_server пригодиться для обработки неправильных запросов, например запросов без поля "Host"
    В моем примере чуть выше nginx просто будет закрывать соединение для таких запросов, для этого служит спец. код 444.
    Ответ написан
    Комментировать
  • Как убрать No input file specified?

    Причин появления ошибки No input file specified несколько:
    1. У вас не установлена переменная SCRIPT_FILENAME в конфиге nginx;
    2. Задан неправильный аргумент root в конфиге nginx;
    3. Переменная open_basedir в /etc/php5/fpm/php.ini или в конфиге php5-fpm пула содержит путь, который не соответствует аргументу root в конфиге nginx;
    4. Пользователь с правами которого работает php5-fpm или конкретный пул php5-fpm не имеет прав доступа к каталогу или файлу с php-скриптом;

    Пример правильного конфига nginx + php5-fpm:
    server {
    ....
    root /var/www/mysite.com;
    index index.php index.html index.htm;
    
    location / {
            try_files $uri $uri/ =404;
    }
    location ~ \.php$ {
            try_files $uri = 404;
            fastcgi_pass unix:/var/lib/php5-fpm/mysite.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
    }
    ...
    }
    Ответ написан
    Комментировать
  • Как авторизовать пользователя по сертификату в NGINX с проверкой CN?

    CN из $ssl_client_s_dn можно достать с помощью map, например в nginx.conf пишем:

    map $ssl_client_s_dn $ssl_client_s_dn_cn {
    	default "";
    	~/CN=(?<CN>[^/]+) $CN;
    }


    в vhost мы можем использовать переменную $ssl_client_s_dn_cn для своих нужд, например для выставления заголовка
    server {
    ...
    proxy_set_header X-CLIENT-SSL-CN $ssl_client_s_dn_cn;
    ...
    }

    далее заголовок X-CLIENT-SSL-CN легко проверяется в самом web-приложении с нужным списком CN

    Возможен и другой вариант - это написание логики проверки CN на самом nginx например с использованием njscript.
    Ответ написан
    1 комментарий
  • NGINX. Как настроить редирект без WWW для домена с Let's Encrypt SSL сертификатом (http/2)?

    Скорее всего проблема в том, что Вы не скопировали некоторые конфиги Nginx в которых определен default_server.

    Посмотрите /etc/nginx/nginx.conf на предмет include
    Например такие:
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;


    Для понимания того как Nginx обрабатывает запросы обязательно почитайте это

    Для понимания работы try_files читаем это

    Так же проверьте наличие index.html в каталоге /var/www/html/example.com, владельца файла и права.

    Ниже один из правильных вариантов конфига, может быть и другой вариант, вплоть до того что server {} можно сделать всего 1 и нагородить кучку if, но if - это зло и неправильно.

    server {
            listen XX.XX.XX.XX:80;
            server_name example.com;
            return 301 https://example.com$request_uri;
    }
    server {
            listen XX.XX.XX.XX:80;
            listen XX.XX.XX.XX:443 http2 ssl;
            server_name www.example.com;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
            ssl_session_cache shared:SSL:50m;
            ssl_session_timeout 5m;
            ssl_dhparam /etc/nginx/ssl/dhparams.pem;
            ssl_prefer_server_ciphers on;
            ssl_session_tickets off;
            ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
            resolver 8.8.8.8 8.8.4.4 valid=300s;
            resolver_timeout 5s;
            ssl_stapling on;
            ssl_stapling_verify on;
            ssl_trusted_certificate /etc/nginx/ssl/letsencrypt-ca.pem;
            ssl_stapling_responder http://ocsp.int-x3.letsencrypt.org;
            return 301 https://example.com$request_uri;
    }
    server {
            listen XX.XX.XX.XX:443 http2 ssl;
            server_name example.com;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
            ssl_session_cache shared:SSL:50m;
            ssl_session_timeout 5m;
            ssl_dhparam /etc/nginx/ssl/dhparams.pem;
            ssl_prefer_server_ciphers on;
            ssl_session_tickets off;
            ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
            resolver 8.8.8.8 8.8.4.4 valid=300s;
            resolver_timeout 5s;
            ssl_stapling on;
            ssl_stapling_verify on;
            ssl_trusted_certificate /etc/nginx/ssl/letsencrypt-ca.pem;
            ssl_stapling_responder http://ocsp.int-x3.letsencrypt.org;
    
            add_header Strict-Transport-Security "max-age=31536000";
            add_header X-Content-Type-Options nosniff;
            add_header X-XSS-Protection "1; mode=block";
    
            root /var/www/html/example.com;
            index index.html index.htm;
    
            include acme;
    
            location / {
                    try_files $uri $uri/ /index.html;
            }
    
    }


    Вместо XX.XX.XX.XX впишите ваш IP адрес на VDS.

    Доп команды к моему конфигу:
    mkdir /etc/nginx/ssl/
    openssl dhparam -out /etc/nginx/ssl/dhparams.pem 2048

    Файл /etc/nginx/ssl/letsencrypt-ca.pem
    -----BEGIN CERTIFICATE-----
    MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
    MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
    DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow
    SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT
    GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC
    AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF
    q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8
    SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0
    Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA
    a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj
    /PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T
    AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG
    CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv
    bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k
    c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw
    VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC
    ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz
    MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu
    Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF
    AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo
    uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/
    wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu
    X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG
    PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6
    KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
    MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
    DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
    PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
    Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
    AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
    rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
    OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
    xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
    7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
    aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
    HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
    SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
    ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
    AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
    R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
    JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
    Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
    -----END CERTIFICATE-----



    Так же обязательно определите default_server, например в файле /etc/nginx/conf.d/fallback.conf можно написать:
    server {
            listen XX.XX.XX.XX:80 default_server;
            server_name _;
            return 444;
    }


    default_server пригодиться для обработки неправильных запросов, например запросов без поля "Host"
    В моем примере чуть выше nginx просто будет закрывать соединение для таких запросов, для этого служит спец. код 444.
    Ответ написан
    Комментировать