前提
AWSのEC2上に作成したRailsアプリをSSL化させたいと考え、以下を参考にしました。
【画像付きで丁寧に解説】AWS(EC2)にRailsアプリをイチから上げる方法
異なる点は、私の環境では、WebサーバにNginx、RailsアプリとWebサーバ、DBサーバがdockerコンテナ上に構成されているという点です。
疑問点
nginx.confファイルを記事を参考に修正すると、docker-compose logsコマンドを実行すると以下が出る。なお、web_1はnginxを動作させているコンテナ名です。
web_1 | 2020/06/07 10:06:22 [emerg] 6#6: no "ssl_certificate" is defined for the "listen ... ssl" directive in /etc/nginx/nginx.conf:52 web_1 | nginx: [emerg] no "ssl_certificate" is defined for the "listen ... ssl" directive in /etc/nginx/nginx.conf:52
SSL証明書が存在しないという旨のエラーメッセージが出ていますが、記事に記載されている「3.Route53の設定」の部分で既に設定しているという認識です。何か確認の漏れがあるでしょうか。ご助言いただければと思います。
/etc/nginx/nginx.confの中身は以下です。
conf
1 2user nginx; 3worker_processes 1; 4 5error_log /var/log/nginx/error.log warn; 6pid /var/run/nginx.pid; 7 8 9events { 10 worker_connections 1024; 11} 12 13 14http { 15 include /etc/nginx/mime.types; 16 default_type application/octet-stream; 17 18 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 19 '$status $body_bytes_sent "$http_referer" ' 20 '"$http_user_agent" "$http_x_forwarded_for"'; 21 22 access_log /var/log/nginx/access.log main; 23 24 sendfile on; 25 #tcp_nopush on; 26 27 keepalive_timeout 65; 28 29 #gzip on; 30 31 include /etc/nginx/conf.d/*.conf; 32 33 server { 34 listen 80; 35 proxy_set_header X-Forwarded-Proto $scheme; 36 if ( $http_x_forwarded_proto != 'https' ) { 37 return 301 https://$host$request_uri; 38 } 39 40 location / { 41 } 42 43 error_page 404 /404.html; 44 location = /40x.html { 45 } 46 47 error_page 500 502 503 504 /50x.html; 48 location = /50x.html { 49 } 50 } 51 52 server { 53 listen 443 ssl; 54 server_name www.test.example.com; 55 } 56}
補足
参考にした記事の4.Nginxの設定
通りにnginx.confをhttpディレクティブに記載すると、下記エラーが出たため、疑問点
に記述した方式をとりました。include /etc/nginx/default.d/*.conf;
の記載位置が異なります。
web_1 | 2020/06/07 09:59:46 [emerg] 6#6: "upstream" directive is not allowed here in /etc/nginx/conf.d/railsapp.conf:1 web_1 | nginx: [emerg] "upstream" directive is not allowed here in /etc/nginx/conf.d/railsapp.conf:1
#server{}欄を以下の通り修正 #httpでアクセスされたものをhttpsにリダイレクト server { listen 80; proxy_set_header X-Forwarded-Proto $scheme; if ( $http_x_forwarded_proto != 'https' ) { return 301 https://$host$request_uri; } # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } #httpsサーバー server { listen 443 ssl; server_name www.greeting-app.xyz;#ドメイン名に修正 }
バージョン情報
- Rails 5.2.4
- Ruby 2.7.2
- nginx 1.17.8
- Docker version 19.03.6-ce, build 369ce74
- docker-compose version 1.25.4, build 8d51620a
参考文献(他も含む)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/08 03:42