Назад | Перейти на главную страницу

Не удается получить доступ к веб-серверу Nginx после настройки SSL

У меня есть разрабатываемая версия веб-сайта Django с доменным именем «mysite.com», которое я использовал для доступа к моему сайту через URL-адрес »http://web01.mysite.com". Я только что установил цифровой сертификат с подстановочными знаками и теперь не могу получить доступ к сайту. Если я воспользуюсь любым из них"https://web01.mysite.com" или "http://web01.mysite.com", Я получаю быстрое сообщение" ERR_CONNECTION_REFUSED ". Я читал документ Nginx по SSL, многочисленные сообщения в блогах о настройке SSL на Nginx и исследовал эту ошибку, но я не могу понять, что не так.

Мой сервер - Debian 8.7. Я использую Nginx 1.6.2, и "--with-http_ssl_module" является одним из аргументов конфигурации. Я также использую файл nginx.conf по умолчанию. Процесс nginx запускается под учетной записью по умолчанию www-data.

Мой сертификат и файл закрытого ключа находятся в этом каталоге:

drwr-xr-x   root  root  /srv/ssl/mysite.com/

Вот мои связанные файлы сертификата и закрытого ключа, которые находятся в указанном выше каталоге:

-r--r-----  root  www-data  ssl-bundle.crt
-r--r-----  root  www-data  mysite.com.key

Когда я настроил групповой сертификат, я указал "* .mysite.com" в качестве общего имени.

Вот мой файл /etc/nginx/sites-enabled/mysite.conf:

server_tokens off;
upstream gunicorn {
    server 127.0.0.1:8000 fail_timeout=0;
}

server {
    #listen 80;
    listen 443 ssl;
    server_name web01.mysite.com;
    ssl_certificate /srv/ssl/mysite.com/ssl-bundle.crt;
    ssl_certificate_key /srv/ssl/mysite.com/mysite.com.key;

    location / {
        root /srv/http/mysite.com/repo;

        # Redirect all HTTP requests to HTTPS
        rewrite ^ https://$server_name$request_uri permanent;
    }

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    client_max_body_size 4G;
    keepalive_timeout 5;

    # Pass static file requests to the file server
    location /static/ {
        proxy_pass http://45.33.33.53;
    }
    location /media/ {
        alias /var/www/mysite.com/media/;
    }

    try_files $uri @django;

    location @django {
        proxy_pass http://gunicorn;
        proxy_redirect off;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;

        # Capture originating IP address of client
        # This allows me to view the HTTP_X_FORWARDED_FOR field in request.META
        # in my login_firewall view.
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Я открыл порт 443 на своем брандмауэре:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
REJECT     all  --  loopback/8           anywhere             reject-with icmp-port-unreachable
ACCEPT     icmp --  anywhere             anywhere             state NEW icmp echo-request
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh state NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http state NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https state NEW
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables_INPUT_denied: "
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables_FORWARD_denied: "
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Если я сделаю «sudo netstat -plnt | grep nginx», я вижу, что Nginx прослушивает порт 443:

tcp   0   0 0.0.0.0:443   0.0.0.0:*   LISTEN    25537/nginx -g daem

Я проверил журнал ошибок nginx (с включенной отладкой), он пуст. Я перезагрузил файлы конфигурации nginx после того, как изменил их.

Нужно ли включать ssl.conf из nginx.conf или моего файла mysite.conf? это ответ упоминает это как требование, но я не видел, чтобы это обсуждалось ни в документации Nginx, ни в каких-либо статьях по настройке, которые я читал в Интернете.

Кто-нибудь видит, что я делаю не так?

Похоже, вы перенаправляете с https на https, вызывая цикл перенаправления. Я не знаю, почему вы получаете сообщение об отказе в соединении, но ваш комментарий выше подтверждает это.

Ваша вторая проблема, 403 Forbidden, скорее всего, связана с разрешениями. Имеет ли пользователь Nginx, работающий как (директива пользователя в nginx.conf), разрешение на ресурсы, на которые ссылается соответствующий блок местоположения?