SSL, Django, Gunicorn, NGINX - Сайт не может быть достигнут с помощью https: // + domain.com

Недавно я запустил сайт, который использует SSL, в частности Comodo PositiveSSL.

Единственная проблема, с которой я сталкиваюсь, это то, что я не могу попасть на сайт с помощью

https://example.com

. Я настроил перенаправления в NGINX для http. Вот моя конфигурация:

upstream myapp {
    server localhost:8000;
}

server {
    listen 80;
    server_name www.example.com example.com;
    root /var/www/;
    if ($host !~* ^(example.com|www.example.com)$ ) {
        return 444;
    }
    return 301 https://$host$request_uri;
}

server {
    listen 443 default ssl;
    root /var/www/;
    server_name www.example.com example.com;
    if ($host !~* ^(example.com|www.example.com)$ ) {
      return 444;
    }

    ssl_certificate      /etc/nginx/ssl/my_crt.crt;
    ssl_certificate_key  /etc/nginx/ssl/my_crt.key;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;

    access_log /var/log/nginx/myapp_access.log;
    error_log /var/log/nginx/myapp_error.log;
    gzip on;
    gzip_http_version 1.0;
    gzip_proxied any;
    gzip_types text/css application/x-javascript;
    gzip_vary on;
    client_max_body_size 0;
    try_files $uri @myapp;

    location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 365d;
    }

    location @myapp {
        client_max_body_size 0;
        proxy_pass http://domain;
        proxy_redirect off;
        proxy_read_timeout 5m;
        proxy_set_header Host            $host;
        proxy_set_header X-Real-IP       $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Мой регистратор DNS - namecheap, и у меня также есть перенаправление URL-адресов в моей cpanel:

host: @
value: http://www.example.com

Благодаря этому я могу успешно попасть на свой сайт, используя:

example.com = 302 Moved Temporarily
www.example.com = 302 Moved Temporarily
http://example.com = 302 Moved Temporarily
http://www.example.com = 302 Moved Temporarily

Здесь не так много:

https://example.com = Failed to connect to domain.com port 443: Connection refused

В настоящее время я проверяю, что мой сертификат SSL допускает и то, и другое:

https://example.com
https://www.example.com

Похоже, что в документации сказано столько же:

Secures: www.site.com and site.com

Я буду очень признателен за любое понимание того, что я делаю неправильно, чтобы помочь исправить это.

Спасибо.

Обновление: netstat -an | grep 443 вывод:

tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN
unix 2 [ ACC ] STREAM LISTENING 6131379 /tmp/ssh-Cpqcfwspdv/agent.25443
0
задан 7 November 2016 в 07:07
3 ответа

Поскольку вы получаете Соединение отклонено ошибка при прослушивании сокета на tcp / 443 , я бы сказал, что это определенно ошибка пакетный фильтр в пути. Проверьте конфигурацию брандмауэра на хосте или, если он отключен, проверьте любой промежуточный брандмауэр на пути.

0
ответ дан 5 December 2019 в 09:15

Если ваша анонимность конфигурации NGINX верна, то ваша директива proxy_pass , скорее всего, неверна. В текущем состоянии соединение с http://example.com перенаправляется на https://example.com , где вы нажимаете директиву try_files , которая сначала пытается обслужить файл из / var / www / , а если нет, передает запрос в указанное место (скрытое), вот где мне это кажется странным. Я предполагаю, что это должно поразить экземпляр Gunicorn (восходящий myapp ), но вместо этого он проксирует запрос на http: // domain , хотя он, скорее всего, должен быть передан на http: // myapp .

Это не объясняет, почему http: // domain кажется преобразованным в https://domain.com , но в любом случае, Предлагаю вам попробовать.

0
ответ дан 5 December 2019 в 09:15

Спасибо @drookie и @Ginnungagap за ваше руководство . Благодаря этому я смог исключить серверные соединения и конфигурации NGINX как потенциальную причину. Окончательное решение состояло из двух частей, часть из которых я получил от моего регистратора доменов. Решение было:

1) Создайте записи A, чтобы указать мой пустой домен (example.com) на IP-адрес моих серверов. 2) Обновите мою конфигурацию nginx, чтобы учесть трафик, идущий как на example.com, так и на www.example.com

@Ginnungagap, пытаясь псевдо-конфигурацию nginx в моем исходном вопросе, я набрал свой proxy_pass директива неверна. Он передавался на http: // myapp .

Я нашел здесь более оптимизированную и более безопасную конфигурацию Конфигурация nginx

Я адаптировал свою конфигурацию под его (добавив дополнительную безопасность SSL

Опять же, большое спасибо за ваше время и рекомендации по этому вопросу.

0
ответ дан 5 December 2019 в 09:15

Теги

Похожие вопросы