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

Не удается подключиться к порту HTTPS в Ubuntu

Я установил новый сертификат SSL и настроил Nginx для его использования. Но время ожидания запросов при попытке перейти на HTTPS на сайте. Когда я подключаюсь через telnet к своему домену через порт 80, он подключается, но время ожидания истекает через порт 443. Я не уверен, есть ли какие-то настройки по умолчанию в Ubuntu, препятствующие подключению. cURL также отключается по адресу HTTPS, но отвечает на обычный HTTP.

Статус UFW показывает:

443  ALLOW    Anywhere

netstat -a показывает:

tcp        0      0 *:https                 *:*                     LISTEN  

nmap localhost показывает:

443/tcp  open  https

Соответствующий блок в конфигурации Nginx:

server {
    listen 443;
    listen [::]:80 ipv6only=on;
    listen 80;
    root /path/to/app;
    server_name mydomain.com

    ssl on;
    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    location / {
      proxy_pass http://mydomain.com;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Изменить: попробовав целый ряд параметров конфигурации nginx, я действительно сомневаюсь, что это настройка. Если ssl-bundle.crt испорчен, произойдет ли тайм-аут? Если это так, я могу вернуться к PositiveSSL для поддержки.

Попробуй это:

server {
    listen 443 ssl;
    listen [::]:80 ipv6only=on;
    listen 80;
    root /path/to/app;
    server_name mydomain.com

    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    location / {
      proxy_pass http://mydomain.com;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

(удалять ssl on;, Добавить ssl к listen 443;)

Проблема была не в Nginx и не в том, с чем кто-то мог бы помочь, поэтому я оставлю это здесь на случай, если у кого-то возникнет эта проблема в будущем.

Проблема заключалась в том, что порт 443 был закрыт на Cloudflare, так как у меня был бесплатный тариф. Они не поддерживают SSL в бесплатном плане.

Я хотел бы согласиться с комментарием Штеффена (слушайте 443 и слушайте 80 в том же серверном блоке).

Пожалуйста, обрабатывайте HTTP и HTTPS в разных серверных блоках. Я предполагаю, что вторая директива прослушивания перезаписала вашу первую директиву прослушивания. Кроме того, я пропустил ключевое слово «ssl» в ваших директивах прослушивания для порта 443.

server {
    listen 80;
    listen [::]:80 ipv6only=on;
    root /path/to/app;
    server_name mydomain.com

    location / {
      proxy_pass http://mydomain.com;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

server {
    listen 443 ssl;
    listen [::]:443 ssl ipv6only=on;
    root /path/to/app;
    server_name mydomain.com

    ssl on;
    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    location / {
      proxy_pass http://mydomain.com;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Как сообщил пользователь xofer, в одном серверном блоке могут быть HTTP и HTTPS. Итак, пример для этого универсального решения:

server {
    listen 80;
    listen [::]:80 ipv6only=on;
    listen 443 ssl;
    listen [::]:443 ssl ipv6only=on;
    root /path/to/app;
    server_name mydomain.com

    ssl on;
    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    location / {
      proxy_pass http://mydomain.com;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}