取得したドメインにhttpでアクセスしてもhttpsでリダイレクトするようにNginxで設定したいと考えています
構成は証明書が乗ったELBが一台とそれに紐づくEC2が二台という単純なもので、それぞれのEC2内では同じ設定のNginxサーバーとRailsアプリが乗っています
現在問題になっているのは、おそらくNginxの設定がおかしいために、http、httpsのいずれでアクセスしても、延々と待たされてエラーすら出ない状況になっているということです。
ELBのListener設定は、以下のようにしてあります
またNginxの設定はこちらです
upstream app { server unix:/data/myapp/shared/tmp/sockets/puma.sock fail_timeout=0; } server { listen 80; server_name example.com; root /data/myapp/current/public; access_log /var/log/nginx/myapp.access.log; error_log /var/log/nginx/myapp.error.log; return 301 https://example.com$request_uri; } server { listen 443; server_name example.com; root /data/myapp/current/public; access_log /var/log/nginx/myapp.access.log; error_log /var/log/nginx/myapp.error.log; location @app { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto; proxy_set_header X-Forwarded-Ssl on; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffers 32 4k; proxy_pass http://app; } location / { try_files $uri/index.html $uri @app; } }
おそらくproxy_set_header周りで何か足りない、間違っているものがあるのかとは思うのですが、知識足らずで何をどうしていいのかがよくわからないのです。
教えていただけると幸いです。よろしくお願いいたします
追伸ですが、以前は以下のような設定で問題なく見れていました
わざわざ変えたのは、よくよく考えたらhttpsはhttps接続のまま渡さないとややこしいのでは?と考えたからです。
参考になるかわかりませんが、よろしくお願いいたします
upstream app { server unix:/data/myapp/shared/tmp/sockets/puma.sock fail_timeout=0; } server { listen 80; server_name example.com; root /data/myapp/current/public; access_log /var/log/nginx/myapp.access.log; error_log /var/log/nginx/myapp.error.log; location @app { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffers 32 4k; proxy_pass http://app; } location / { try_files $uri/index.html $uri @app; } }
回答2件
あなたの回答
tips
プレビュー