Discourse で「www」を機能させる方法

こんにちは、www サブドメインが実際の Discourse インストールへユーザーをリダイレクトしているか確認したいと考えています。訪問者を失わないために、これは必須だと感じています。ウェブサイトを訪れる際、多くの人は「www」を省略しないためです。

「いいね!」 3

ドメインレジストラの DNS 設定で、www の A レコードをサーバーの IP アドレス(現在 domain.com の A レコードが指しているのと同じ IP)に追加する必要があります。

「いいね!」 1

www 付の URL でユーザーがアクセスした場合に問題が発生しますか?Discourse は www を含まない設定になっています。

「いいね!」 1

いいえ、ユーザーはリダイレクトされるためです。同じサイトが複数のドメインで提供されることはありません。

「いいね!」 3

これらのガイドが役に立ちます。私も同じ目的で利用しました:

「いいね!」 4

‘www’ の A レコードを追加するだけでは不十分だと言っているのですか?私はその記事を読みました。

サブドメインの両方に証明書を取得しないと、ブラウザに不快なメッセージが表示されてしまいます。

「いいね!」 1

Digital Ocean のドロップレットに Discourse をセットアップしました。ステップ 2 の discourse.conf の編集には、nginx のインストールが必要でしょうか?確信はありませんが、私のドロップレットには nginx がインストールされていないと思います。nginx のインストール方法がわかりません。

このガイドがその部分を説明していると思います:

https://meta.discourse.org/t/running-other-websites-on-the-same-machine-as-discourse/17247/294

「いいね!」 1

はい、同じ IP アドレスを指す www 用の A レコードを追加すれば、トラフィックのリダイレクトには十分です。

他のガイドに記載されている手順は不要です。単純なリダイレクトであれば、IP アドレスを指す A レコードだけで十分です。

必要がない限り、インストールを複雑にしないようにしてください。

「いいね!」 3

ただし、これで NET::ERR_CERT_COMMON_NAME_INVALID というブラウザエラーを回避できるでしょうか?Discourse を www サブドメインにインストールした場合、https://example.com でサイトにアクセスすると、そのエラーが表示されます。https://www.example.com を使わないと動作しません。

そのため、リダイレクトを使用する必要があります。Discourse は複数の URL から提供することはできません。

1 つを選び、もう一方をリダイレクトしてください。

「いいね!」 1

私も同様の問題を抱えており、DNS レベルでの URL リダイレクトレコードを使用しても解決しませんでした。

Discourse をホスト名 ‘www.example.com’ と以下の DNS レコードを使用してインストールしました。

A レコード             ホスト:WWW      値:my_server_ip
CNAME                  ホスト:@        値: www.example.com
URL リダイレクトレコード  ホスト:@        値:https://www.example.com

その後、https://www.ssllabs.com/ssltest/index.html を使用して https://example.com(WWW なし)の URL を確認すると、証明書の名前不一致が発生し、ブラウザでは NET::ERR_CERT_COMMON_NAME_INVALID エラーが表示されます。

もし私が何か明らかな見落としをしているのであれば、改めてお詫び申し上げます。ネットワークは私の得意分野ではないためです!

「いいね!」 1

だから、私はそれらのリンクを投稿したのです。DNS 変更だけで済めば素晴らしいのですが、私にもそれほど簡単には見えませんでした。HTTPS 経由で動作させるには、両方のアドレスに対して証明書が登録されていることを確認する必要がありました。それを実現するには、上記のガイドのいずれかを使用してください。もう一つのガイドでは、リダイレクトを実行できます。

ユーザーが URL を入力する際にプロトコルを指定することは非常に稀です。もし本当に懸念される場合は、Cloudflare の DNS とシンプルなページルールを使用するだけで対応できます。

「いいね!」 1

はい、私はドメインを「移動」しました(正確には www を削除しただけですが)。そのため、私が管理していない他のサイトから私の旧ドメインを参照する既存のリンクを、https を付けた状態で提供する必要がありました。そのことが、私の場合は完全な対応をするしかなかった理由かもしれません。

つまり、あなたが言いたいのは、単にユーザーが www.example.com と入力して https://example.com にリダイレクトされるだけであれば、DNS の変更だけで済むということでしょうか?

しかし、何らかの理由で https://www.example.com も動作させる必要がある場合(私の場合は、そのようなリンクがすでに「外に出ている」ため必要でした)、提供されているガイドに従う必要があります。

上記の通り、ページルールを使用するだけで、ワイルドカード証明書でドメインをフロントし、トラフィックをシームレスにリダイレクトできます。

Discourse サーバー側では、追加の複雑さは一切不要です。

「いいね!」 1

ページルールとは何ですか?

Digital OceanのドロプレットにNginxをインストールし、その後「ステップ2」に記載されているルールを適用して正しいドメインへリダイレクトするつもりです。URLはHow To Install Discourse Behind Nginx on Ubuntu 14.04 | DigitalOcean です。これでうまくいくはずです!明日試してみて、https://www.、http://www.、http://domain.comhttps://domain.com のすべての組み合わせを、Let’s Encryptの証明書(https://www.domain.com)を持つDiscourseホスト名へリダイレクトできるか確認します。

結果は後ほど報告します!

@Erik_Mangerさん、DNSベースのソリューションはSSLでは私には機能しませんでした。@merefieldさんが提供した最初のリンクを使用しましたが、うまく動作しています。

これを動作させるために、Discourse の前に Nginx をインストールする必要がありましたか?私の Digital Ocean ドロップレットでは、追加のフックで使用されるパス「/etc/nginx/」が存在しません。