Рейтинг:0

Веб-служба HTTPS и внутренняя служба на одном сервере

флаг ne

Есть ли способ настроить серверную службу для прослушивания HTTPS в уже существующей веб-службе, которая уже обслуживает HTTPS?

Первоначально у меня оба обслуживались по HTTP, но недавно я добавил ЦС для веб-службы. Оба прекрасно работают по HTTP, но при попытке получить доступ к серверной части (с порта 5000) с HTTPS я не получаю ответа (изначально я обслуживал серверную часть с помощью PM2). Мне нужно было обновить вызовы ajax из внешнего интерфейса, чтобы вызывать серверную часть по HTTPS вместо HTTP.

Я изучил применение NGINX для серверной части, но не могу найти ресурсы для моей конкретной ситуации, и я понятия не имею, как настроить NGINX для прослушивания порта 5000 для HTTPS (что для меня не имеет смысла, поскольку HTTPS — это порт 443).

Michael Hampton avatar
флаг cz
Пожалуйста, опубликуйте вывод `nginx -T`
Gerard H. Pille avatar
флаг in
Https — это не порт 443, этот протокол может использоваться на любом порту клиентом и сервером.
Рейтинг:0
флаг za

Это базовый запрос, я отвечу на него в общем, поскольку пользователь не предоставил достаточно информации, чтобы быть более точным. НАПОМИНАНИЕ: Итак, это ответит на него в целом.

Предварительная информация

Пользователь говорит, что он хочет слушать или порт 5000 для https

Стандартный редирект с http на https

сервер {
        имя_сервера *.домен.tld домен.tld;
        # прослушать порт 80
        слушать 80;
        #перенаправить на https
        вернуть 301 https://$host$request_uri; 
}

Слушайте NGINX на порту 5000

сервер {
        имя_сервера *.домен.tld домен.tld;
        # прослушать порт 5000, http
        слушать 5000;
        #добавьте сюда что-нибудь
}

Стандартная директива https Server, использующая Certbot для генерации сертификата

сервер {
        # прослушать 443 для SSL (https) с http 1.0/1.1
        #прослушивание 443 ssl;
        
        # Слушайте на 44 для SSL (https) с http 2
        слушать 443 ssl http2;
        
        #Что мы слушаем для домена      
        имя_сервера *.домен.tld домен.tld;
                место расположения / {
                корень /var/www/vhosts/domain.tld;
}
    ssl_certificate /etc/letsencrypt/live/domain.tld/fullchain.pem; # под управлением Certbot
    ssl_certificate_key /etc/letsencrypt/live/domain.tld/privkey.pem; # под управлением Certbot
}

Базовое прослушивание обратного прокси-сервера через порт 80 http И порт 443 SSL

сервер {
        # слушать на 80 для https с http 1.0/1.1
        слушать 80;
        
        #прослушивание 80 для https с http 2 (отключено, certbot не понимает его на порту 80)
        #слушай 80 http2;

        # прослушать 443 для SSL (https) с http 1.0/1.1
        #прослушивание 443 ssl;
        
        # Слушайте на 44 для SSL (https) с http 2
        слушать 443 ssl http2;
        
        #Что мы слушаем для домена      
        имя_сервера *.домен.tld домен.tld;
                место расположения / {
                        прокси_пароль http://127.0.0.1:5000;

                        #https даже работает
                        #proxy_pass https://127.0.0.1:5000;                            
                        proxy_set_header Хост $http_host;
}
    ssl_certificate /etc/letsencrypt/live/domain.tld/fullchain.pem; # управляемый 
    Сертбот
    ssl_certificate_key /etc/letsencrypt/live/domain.tld/privkey.pem; # управляемый 
    Сертбот
}

Выводы

Если вы хотите получить доступ к своему серверу на порту 5000, вы должны использовать proxy_pass, если вы хотите, чтобы NGINX слушал порт 5000, если он не используется, слушайте слушать 5000 ssl;

Кроме того, как уже говорили другие, SSL - это протокол, который не привязан к определенному порту, обычно используется 443, но он не должен его слушать, я также мог бы использовать для него 61337.

Я обновлю ответ на случай, если ОП обновит вопрос.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.