こんにちは、
Discourse の前に Nginx を配置した場合(Nginx → AWS LB → Discourse コンテナ)、ログインが全く機能しません。認証情報を入力すると、Discourse のホームページにリダイレクトされてしまいます。
Nginx は HTTP から HTTPS へのリダイレクトを設定しています。ドメインとサブドメインには AWS Certificate Manager で証明書が用意されています。
Discourse の SAML プラグインがインストールされています。また、別のアプリケーション経由での SSO も使用しており、その設定では HTTPS が使われています。サイト設定でも force_https が有効になっています。
SSO アプリケーションは正常に動作していることは確認できましたが、Nginx を適用した後に Discourse の認証が停止しているようです。
当社のフォーラムサイト(Discourse)向けに、Nginx は以下のように設定されています。
server {
server_name [subdomain.domain.com];
location / {
resolver [insert.resolver.ip.here] valid=60s;
if ($http_x_forwarded_proto != "https") {
rewrite ^(.*)$ https://$server_name$1 permanent;
}
proxy_pass [AWS-load-balancer-domain];
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Referer $http_referer;
}
}
この Nginx 設定は、メインサイトの他のサブドメインでは正常に動作しています。
以下は SSO の詳細ログです。表示されているエラーは ActionController::RoutingError (No route matches [GET] "/.env") に関するもののようです。
verbose-sso-log.txt (6.3 KB)