ウェブサイトがHTTPSにリダイレクトされない

こんにちは、

例えばブラウザで「thenameofmywebsite.com」と入力しても、自動的に安全な SSL の https へリダイレクトされません。

Discourse でこれを設定変更するにはどこを確認すればよいでしょうか?よろしくお願いいたします。

「いいね!」 1

Discord は別の製品です。おそらく Discourse のことをおっしゃっているのだと思います。

SSL はどのように設定しましたか?このインスタンスはどのようにインストールされましたか?

標準ガイドに従った場合、HTTPS へのリダイレクトは標準通り動作するため、別の方法でインストールしたか、インストール後に設定を変更したことが考えられます。

「いいね!」 4

ごめんなさい、タイプミスでした。

これが私の discourse.conf です。

server {

    if ($host = wolcengame.net) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80;
    listen [::]:80;
    server_name wolcengame.net www.wolcengame.net; 
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name wolcengame.net www.wolcengame.net;

https://wolcengame.nethttps://www.wolcengame.net の間に違いがあります。最初のリンクは正常に動作し、ページが読み込まれますが、2 番目のリンクをクリックすると https://www.wolcengame.net に切り替わり、画面が暗くなり、何も読み込まれません。

何が間違っていて、どう修正すればよいのか見当もつきません。

「いいね!」 1

この部分を削除し、nginx を再起動すれば正常に動作するはずです。

「いいね!」 3

何も変わっていないと思います。問題は依然として残っています。他にアイデアはありますか?

その設定は、さまざまな方法で変更できます。

  1. 希望するドメインへの HTTPS リダイレクトのみを設定する
  2. non-www から www へ(またはその逆)のリダイレクトを設定する
  3. yml ファイルに正しい Discourse ホスト名が設定されていることを確認する

こんにちは、Bhanu さん。

  1. 私のドメインには HTTPS が設定されています(すでに私が提供したウェブサイトへのリンクからご存知の通りです)。
  2. www から非 www へのリダイレクトも設定されています(私が提供したコードからご存知の通りです)。
  3. yml ファイル内の Discourse ホスト名は正しいです(私のウェブサイトが正常に稼働していることからお分かりいただけるはずです)。

DISCOURSE_HOSTNAME: wolcengame.net

同じ構成の別のウェブサイト(discourse.conf と同じ設定)があり、そこではこのような問題は発生していません。

質問ですが、Discourse が nginx のリダイレクトに干渉している可能性はありますか?昨日はあらゆる方法を試しましたが、この問題を解決するアイデアが尽きてしまいました。

これは私の 2 つ目のウェブサイト www.koktailmolotov.com です。ウェブサイトをクリックすると、自動的に https://koktailmolotov.com という形式にリダイレクトされます。設定ファイルの内容は、Discourse ウェブサイトと同じです。

それはありえません。なぜなら、すべてのトラフィックは外部の nginx が処理しているからです。ここでは、Discourse をソケット化されたテンプレートで実行しており、外部の nginx プロキシがすべてのトラフィックを処理していると仮定しています。

もし Discourse 用の nginx 設定を投稿していただければ、問題の原因を特定するお手伝いができるかもしれません。

以下は、本日時点での discourse.conf の nginx 設定全体です。

server {

listen 80;
listen [::]:80;
server_name www.wolcengame.net;
return 301 $scheme://wolcengame.net$request_uri;

}

server {

listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name wolcengame.net www.wolcengame.net;

ssl on;
ssl_certificate /etc/letsencrypt/live/wolcengame.net/fullchain.pem; # Certbot によって管理されています
ssl_certificate_key /etc/letsencrypt/live/wolcengame.net/privkey.pem; # Certbot によって管理されています
ssl_dhparam /etc/letsencrypt/live/wolcengame.net/dhparams.pem;
include /etc/nginx/snippets/ssl.conf;

http2_idle_timeout 5m; # デフォルトの 3m から引き上げました

location / {
    proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock;
    proxy_set_header Host $http_host;
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header X-Real-IP $remote_addr;

}

}

これを以下のように変更してください。

return 301 https://wolcengame.net$request_uri;

ここから www.wolcengame.net を削除してください。

そして、以下のように別のブロックを作成してください。

listen 443 ssl;
listen [::]:443 ssl;
server_name www.wolcengame.net;
ssl_certificate /etc/letsencrypt/live/wolcengame.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wolcengame.net/privkey.pem; 
return 301 https://wolcengame.net$request_uri;
「いいね!」 4

はっきり言っておきますが、これは Discourse の問題ではありません。

Discourse は 1 つの FQDN でのみ動作できます。問題は、2 つの FQDN を設定しており、リダイレクトが正しく設定されていなかったことです。これらの問題に対する解決策は、他のトピックですでに回答されています。

「いいね!」 3

あなたは天才ですね。これで問題が解決しました。本当にありがとうございます。

「いいね!」 1

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.