ポート80でhttpsリンクを生成する

サーバーを実装して、ポート80でリッスンしつつ、リンクはHTTPSで提供するようにする必要があります。この問題をどのように解決すればよいでしょうか?

現在の設定は以下の通りで、すべてのリンクがHTTPになっています:
expose:
# - “443:443” # https
- “80:80” # https

443に名前を変更しようとしましたが、失敗しました。

それは不可能だと思います。

「いいね!」 1

セキュリティ上の理由から、Let’s Encrypt は非常に厳格であり、443 番ポート以外のポートには SSL 証明書を提供しないと思います。

「いいね!」 2

https 強制 サイト設定を有効にしますか?

「いいね!」 1

なぜこれを行う必要があるのか、説明していただけませんか?

「いいね!」 1

Discourseがインストールされた内部サーバーがあり、ポート80でリッスンしています。訪問者がサイトを要求すると、常にhttpsにリダイレクトされますが、すべてのリンクがhttpのままになっています。このインフラストラクチャは管理していませんが、ポート80以外に手段がありません。

残念ながら、私の場合はそれが機能しません。私は実際には HTTPS を使用していないためです。

無効にすることはできますが、SSL の関係でポート 80 での HTTPS 有効化が不可能なため、これで問題が解決するとは考えにくいです。

Discourse は非標準ポートでの実行をサポートしていません。

これにはポート 80 での HTTPS 実行も含まれます。

「いいね!」 1

つまり、他の場所でリバースプロキシを設定しており、Discourseを含むすべてのサイトのSSLを処理している、ということでしょうか?

「いいね!」 1

試してみましたか?

では、何を実現しようとしているのでしょうか?

つまり、ページに提供されるリンクがHTTPSであり、HTTPSの処理は別の方法で行っている、ということでしょうか?

申し訳ありませんが、あなたの投稿の意図が(完全に)理解できませんでした。

あなたは次のようにおっしゃっています。

サーバーを、ポート 80 で待ち受けつつ、リンクは https で返すように設定したいのですが、この問題をどう解決すればよいでしょうか?

もし私が正しく理解しているなら、すべてのポート 80 の HTTP トラフィックをポート 443 の HTTPS にリダイレクトし、ポート 80 には HTTPS トラフィックを送らず、ポート 80 からポート 443 へのリダイレクトのみを行いたいということですね。

もしそうであれば、これはほぼすべてのウェブサーバーで採用されている設定です。例えば、Apache2 や nginx を使って LetsEncrypt でポート 443 のトラフィックを設定する場合、LetsEncrypt はこのリダイレクトを設定するかどうか尋ね、選択すれば自動的に設定してくれます。

@Falco が尋ねたように、あなたの正確な設定はどのようなものですか?Discourse の前面に nginx や Apache2 などのウェブサーバーをリバースプロキシとして稼働させていますか?

もしそうであれば、nginx や Apache2 で LetsEncrypt を設定する際、設定ダイアログで「はい」を選択すれば、LetsEncrypt のセットアップソフトウェアが自動的に「すべての HTTP を HTTPS にリダイレクト」する設定を行ってくれます。

「いいね!」 2

はい、彼らは私の意図を正しく理解しました


他のポートはもう開けられなくなりました。また、サイト自体は https で動作するリバースプロキシが設定されていますが、Discourse 内部のリンクは https 化されていません。

ええと、Discourse の出力ストリームは常に 80 になっています。他のポートをリッスンすることはできず、Let’s Encrypt に関する設定も見当たりません。

こんにちは、@anton21m さん

はい、これであなたがコンテナの前にリバースプロキシを配置していることがより明確になりました。

使用しているリバースプロキシは何ですか?nginx ですか?それとも Apache2 ですか?

サーバー: nginx/1.14.1
しかし、私はそれへのアクセス権を持っていません
https://forum.qpay.uz/

すべてのリンクが http であることを確認できます

@anton21m さん、新しい Discourse サイトはすっきりとしていて素敵ですね。

私たちは今、あなたの状況を完全に理解しました。ありがとうございます。

nginx または system にアクセスできない場合は、システム管理者に LetsEncrypt のインストールと SSL のサイトへの追加を依頼する必要があります。

nginx にアクセスできず、そのホスティングプロバイダーを使い続ける場合、それが唯一の選択肢です。

お伝えできて残念です。別のホスティングプロバイダーを検討されてはいかがでしょうか?

「いいね!」 1

明らかに、これは不可能です!!!
このような解決策を見つけたいです

あなたが仰る「望ましい解決策」とは、私たちが以前からアドバイスしていたことそのものです。例えば、Web サーバーを設定してポート 80 のトラフィックをポート 443 にリダイレクトさせることです。

この解決策には、これまでアドバイスしてきたのと同じく、Web サーバーの変更が必要です。

したがって、@anton21m さん、私たちは堂々巡りを始めています…

しかし、あなたが成功していただけるよう、@anton21m さんのために、もう一度繰り返させてください :slight_smile: :slight_smile:

Web サーバーへのアクセス権があり、ポート 80 のトラフィックをポート 443 にリダイレクトするように設定する必要があります。また、同じ Web サーバーで SSL 証明書を設定する必要があります。もしホスティングプロバイダーがこれを許可しない場合は、別のホスティングプロバイダーに移行する必要があります。

Discourse が推奨するホスティングプロバイダーのいずれかでホスティングすることを検討してください。彼らはすべてを簡単に代行してくれます。

これが役立つことを願っています。

推奨:

「いいね!」 1

Discourse の force_https サイト設定を有効にすることで、それを達成できるはずです。

「いいね!」 3