Генерация https-ссылок на порту 80

Мне нужно настроить сервер так, чтобы он слушал порт 80, но выдавал ссылки по HTTPS. Как решить эту проблему?

Моя текущая конфигурация работает следующим образом, и все ссылки используют http:
expose:
# - “443:443” # https
- “80:80” # https

Я попытался переименовать порт в 443, но это не сработало.

Я не думаю, что это возможно сделать.

Let’s Encrypt довольно строг, и я не думаю, что они предоставят SSL-сертификаты для любого порта, кроме 443, по соображениям безопасности.

Может, включить настройку сайта force https?

Не могли бы вы объяснить, зачем вам это нужно?

На внутреннем сервере установлен Discourse, который прослушивает порт 80. Когда посетитель запрашивает сайт, он всегда перенаправляется на HTTPS, но все ссылки остаются в HTTP. Я не контролирую эту инфраструктуру, и у меня нет других вариантов, кроме порта 80.

Боюсь, что в моём случае это не сработает, так как я на самом деле не работаю с https

Я могу отключить это, но, по-моему, это не решит проблему, так как включение HTTPS на порту 80 невозможно из-за SSL.

Discourse не поддерживает работу на нестандартных портах.

Это включает в себя запуск https на порту 80.

Вы имеете в виду, что у вас где-то настроен обратный прокси, который обрабатывает SSL для всех ваших сайтов, включая Discourse?

Вы уже пробовали?

Так что же вы пытаетесь сделать?

Разве это не означает, что вы хотите, чтобы ссылки на страницах, которые отдаются, были по протоколу https, а обработку https вы осуществляете каким-то другим способом?

Извините, я не до конца понимаю ваши сообщения.

Вы написали:

Мне нужно настроить сервер так, чтобы он слушал порт 80, но выдавал ссылки в формате https. Как решить эту проблему?

Если я правильно понял, вы хотите, чтобы весь HTTP-трафик на порту 80 перенаправлялся на порт 443 (HTTPS), при этом на порту 80 не должен использоваться HTTPS, а только перенаправление на порт 443.

Если это так, то именно так обычно настроены большинство веб-серверов. Например, если вы используете LetsEncrypt для настройки трафика на порту 443 с помощью Apache2 или nginx, LetsEncrypt спросит вас, хотите ли вы настроить такое перенаправление, и выполнит это за вас.

Как уже спрашивал @Falco, какая у вас точная конфигурация? Запускаете ли вы веб-сервер, например nginx или Apache2, перед Discourse в качестве обратного прокси?

Если да, то при настройке LetsEncrypt на nginx или Apache2 программа установки LetsEncrypt автоматически настроит «перенаправление всего HTTP на HTTPS» (если вы выберете «да» в диалоговом окне конфигурации).

Да, они меня правильно поняли


Я больше не могу открыть другие порты, и есть обратный прокси, который делает сайт HTTPS, но не ссылки внутри Discourse

Хм, мой исходящий поток из Discourse всегда на порту 80. Я не могу слушать другие порты, и речь здесь не о Let’s Encrypt.

Привет, @anton21m

Да, теперь мы более четко понимаем, что перед вашим контейнером стоит обратный прокси-сервер.

Какой обратный прокси-сервер вы используете: nginx? Apache2?

сервер: nginx/1.14.1
Но у меня нет к нему доступа
https://forum.qpay.uz/

Вы можете убедиться, что все ссылки используют протокол http

У вас получился очень аккуратный и приятный новый сайт на Discourse, @anton21m.

Мы теперь полностью понимаем вашу ситуацию. Спасибо.

Если у вас нет доступа к nginx или системе, вам нужно попросить вашего системного администратора установить LetsEncrypt и добавить SSL на ваш сайт.

Это действительно ваш единственный вариант, если вы планируете остаться с этим хостинг-провайдером и у вас нет доступа к nginx.

Приносим извинения за эту новость. Возможно, стоит рассмотреть другого хостинг-провайдера?

Очевидно, что это невозможно!!!
Я хотел бы найти решение, подобное этому

То «желаемое решение», о котором вы говорите, — это именно то, что мы вам советовали: например, настроить ваш веб-сервер так, чтобы он перенаправлял трафик порта 80 на порт 443.

И это решение требует изменения веб-сервера, так же как вам уже советовали.

Так что, @anton21m, мы начинаем ходить по кругу…

Но позвольте мне повторить это ещё раз, специально для вас, @anton21m :slight_smile: :slight_smile: потому что мы хотим, чтобы у вас всё получилось!

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

Вы можете рассмотреть возможность размещения у одного из рекомендованных для Discourse хостинг-провайдеров, так как они всё это сделают за вас легко.

Надеемся, это поможет.

Рекомендуем:

Вы должны быть в состоянии достичь этого, включив настройку сайта force_https в Discourse.