質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

3回答

2582閲覧

awsでhttps設定をすると、nginxでエラーが出る、起動したい

ma_k

総合スコア33

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/01/09 08:44

編集2020/01/10 04:28

awsでhttps設定をすると、nginxでエラーが出る、起動したいです。

ruby on rails でアプリを作成し、

(下準備編)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで

を参考にデプロイしました

SSL設定をしたく

ALB-EC2構成のhttps接続を構築

AWSでhttps化

を参考に設定していきました。

ここまではできたのですが、
サイトがうまく表示されず、
原因を探していくと、nginxの設定ができてなかったと気付きました

【超丁寧】Rails4.2 + AWS + nginx でウェブアプリのproductionを http → https に移行させた方法

のコードを参考にnginx設定をし、
nginxを起動すると、エラーになってしましました。

$ sudo service nginx restart Redirecting to /bin/systemctl restart nginx.service Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

とターミナルに表示され、

$ systemctl status nginx.service  ● nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled) Active: failed (Result: exit-code) since 木 2020-01-09 07:49:57 UTC; 5min ago Process: 2753 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Process: 2970 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=1/FAILURE) Process: 2969 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Main PID: 2756 (code=exited, status=0/SUCCESS)

となってしまい、解決策を検索しているのですが見つかりません

どなたか教えていただけますでしょうか。

/etc/nginx/nginx.confは

nginxconf

1user nginx; 2worker_processes auto; 3error_log /var/log/nginx/error.log; 4pid /run/nginx.pid; 5 6# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. 7include /usr/share/nginx/modules/*.conf; 8 9events { 10 worker_connections 1024; 11} 12 13http { 14 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 15 '$status $body_bytes_sent "$http_referer" ' 16 '"$http_user_agent" "$http_x_forwarded_for"'; 17 18 access_log /var/log/nginx/access.log main; 19 20 sendfile off; 21 tcp_nopush on; 22 tcp_nodelay on; 23 keepalive_timeout 65; 24 types_hash_max_size 2048; 25 26 include /etc/nginx/mime.types; 27 default_type application/octet-stream; 28 29 # Load modular configuration files from the /etc/nginx/conf.d directory. 30 # See http://nginx.org/en/docs/ngx_core_module.html#include 31 # for more information. 32 include /etc/nginx/conf.d/*.conf; 33 34 server { 35 listen 80; 36 proxy_set_header X-Forwarded-Proto $scheme; 37 if ( $http_x_forwarded_proto != 'https' ) { 38 return 301 https://$host$request_uri; 39 } 40 41 # Load configuration files for the default server block. 42 include /etc/nginx/default.d/*.conf; 43 44 location / { 45 } 46 47 error_page 404 /404.html; 48 location = /40x.html { 49 } 50 51 error_page 500 502 503 504 /50x.html; 52 location = /50x.html { 53 } 54 } 55 56 #httpsサーバー 57 server { 58 listen 443 ssl; 59 server_name ○○○○○○○○;#ドメイン名に修正 60 } 61 62 63

と書きました。

/etc/nginx/conf.d/○○○○○confの内容は

error_log /var/www/rails/○○○○/log/nginx.error.log; access_log /var/www/rails/○○○○/log/nginx.access.log; # max body size upstream app_server { # for UNIX domain socket setups server unix:/var/www/rails/○○○○/tmp/sockets/.unicorn.sock fail_timeout=0; #自分のアプリケーション名に変更 } server { listen 80; server_name 13.112.20.119 archibook.cloud; # nginx so increasing this is generally safe... keepalive_timeout 5; # path for static files root /var/www/rails/○○○○/public; # page cache loading try_files $uri/index.html $uri.html $uri @app; location @app { # HTTP headers proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://app_server; } # Rails error pages error_page 500 502 503 504 /500.html; location = /500.html { root /var/www/rails/○○○○/public; } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

nginxで443をlistenしたいなら、証明書を設定する箇所が必要です。

internet -443-> ALB -80-> nginx ですと、nginxのlistenポートは80のままでOKです。
※言ってることはyu_1985さんの回答と同じです

ELBを噛ませてELB上でSSL終端するのであれば、下にあるインスタンスはhttpのリクエストが受け付けられれば十分です。

投稿2020/01/09 09:14

yukky1201

総合スコア2751

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

/etc/nginx/conf.d/とか/etc/nginx/default.d/に違うconfがあったりしませんか

それはそれとして、参照している記事は古いので、ALBを使っているものを探してみてください。
また、ロードバランサーからEC2の80番ポートにリクエストを振っているのに、そのリクエストをhttpsにリダイレクトさせたら多分おかしなことになります(nginxの起動に失敗するのとは関係ないでしょうけど。)
ELBを噛ませてELB上でSSL終端するのであれば、下にあるインスタンスはhttpのリクエストが受け付けられれば十分です。

投稿2020/01/09 08:57

yu_1985

総合スコア7440

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ma_k

2020/01/09 13:55

>/etc/nginx/conf.d/とか/etc/nginx/default.d/に違うconfがあったりしませんか confファイルが、/etc/nginx/conf.dの中に、アプリ名.confでありました。 新しい記事探しと、リダイレクト関係確認してみます。
ma_k

2020/01/10 04:31

>それはそれとして、参照している記事は古いので、ALBを使っているものを探してみてください。 また、ロードバランサーからEC2の80番ポートにリクエストを振っているのに、そのリクエストをhttpsにリダイレクトさせたら多分おかしなことになります(nginxの起動に失敗するのとは関係ないでしょうけど。) ELBを噛ませてELB上でSSL終端するのであれば、下にあるインスタンスはhttpのリクエストが受け付けられれば十分です。 インスタンスはhttpのリクエストできる設定のままで良いってことですか? 新そうなサイトを見つけたので、参考に修正しようと思います。 https://qiita.com/Yuki_Nagaoka/items/55ed1610cfc1f59398b1#4nginx%E3%81%AE%E8%A8%AD%E5%AE%9A
yu_1985

2020/01/10 04:46 編集

このサイトのやり方はちょっと完全ではないですね…。 具体的には下記です - ALB配下のインスタンスでHTTP→HTTPSのリダイレクトをしている ALBだけでHTTPSへのリダイレクトが可能です。配下のインスタンスではhttpだけ受け付ければOKです。 https://dev.classmethod.jp/cloud/aws/alb-redirects/ - ALBを噛ませているのに配下のインスタンスの80,443を全開放している  ALBからの通信だけ許可すれば十分(というか、そうしないとインスタンスに直接アクセスする手段が残っていまう)なのと、そもそも見た感じ80番ポートにしかリクエストを振っていないので443番ポートを開ける必要性がありません(nginxでわざわざリダイレクトしているから開けている?)
yu_1985

2020/01/10 07:36

はい、nginxにリダイレクトの設定を入れる必要がなくなります。(もちろん通常通り80番ポートはListenしておかないとダメです) 参考 https://blog.hatappi.me/entry/2018/07/27/091946 これによってALB配下のインスタンスに持たせる情報がまた減り、サーバの設定をよりシンプルにできます。 非常に便利なのでALBを使用するのであれば是非使うといいと思います。
ma_k

2020/01/13 05:52

コメント遅くなって申し訳ありません。 参考サイトありがとうございます! 頼ってしまって恐れ多いのですが、 nginxの設定は前に戻し、ALBの設定を参考サイトをみながらしてみたのですが、サイトが開かず、、、 VPCのセキュリティグループ→インバウンドのルール設定で、HTTP,SSH ロードバランサーのターゲットグループ→プロトコルHTTP ロードバランサーのリスナー→HTTP(参考サイトよりルール設定)、HTTPS なのですが、他に設定すべきところがあるのでしょうか、、、
yu_1985

2020/01/13 16:30

それだけでは開かない原因がちょっとわからないです…。 開かないといいますが、nginx、ALBのどこでエラーになっているのか、またエラーの内容はなにか、はわかりますか?
ma_k

2020/01/15 05:46

エラーになっている箇所を突き詰めようと、route53の設定をいったんIPアドレスでアクセスする設定に戻して たんですが、ちょっとおかしなことをしてしまったのか unicornの起動でエラーが出たので、一旦保留にします。申し訳ありません。
ma_k

2020/01/18 13:12

一からやり直そうと、セキュリティグループをデフォルトからオリジナルの設定にしたらアクセスできました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問