HTTPSを強制するリダイレクトを追加するまで、nginx構成はうまく機能します。リダイレクト前の作業構成は次のとおりです。
server {
listen 80;
listen 443 default_server ssl;
server_name my-domain.com www.my-domain.com;
client_max_body_size 5M;
location / {
proxy_pass http://localhost:3000;
}
}
サーバーのポート3000でアプリを実行していますが、ドメインのポート80とポート443(httpとhttps)でアプリを提供したいと考えています。ただし、ユーザーがHTTP経由でアクセスしようとしたときにHTTPSにリダイレクトすることも必要です。私はそれを設定するために この答え を使用しました:
server {
listen 80;
server_name my-domain.com www.my-domain.com;
client_max_body_size 5M;
return 301 https://$server_name$request_uri;
}
server {
listen 443 default_server ssl;
server_name my-domain.com www.my-domain.com;
client_max_body_size 5M;
location / {
proxy_pass http://localhost:3000;
}
}
ただし、これによりリダイレクトループが発生します。私はnginxに比較的慣れていないことを認めます。そのため、誰かが私をこれを説明できるリソースに紹介してくれるなら、それは大いにありがたいです。私の推測では、それはlocationやproxy_passの使用に関係していると思いますが、ドキュメントを掘り下げても、より深い洞察は得られませんでした。
注意すべきもう一つのことは、このアプリはCloudFlareを介して送信されているということです。
これは解決されました。私は元のnginx構成に固執し、CloudFlareページルールを使用してHTTPSを強制しました。
使用されたルールは次のとおりです。
http://*gistbook.io/*
=>常にHTTPSを使用する