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

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

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

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

nginx

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

AWS(Amazon Web Services)

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

Q&A

0回答

1000閲覧

Dockerでnginxのリバプロ設定がうまく動かない(EC2)

re-re-

総合スコア13

HTTP

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

nginx

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

AWS(Amazon Web Services)

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

0グッド

1クリップ

投稿2021/08/24 09:35

EC2にDockerをインストールしてnginxのdockerを動かしました。

DockerのイメージはDockerfileからビルドしました。
使用したDockerfileは以下のgithubから取得しました。
NginxのDockerfile

また、普段利用しているリバプロ設定を施したnginx.confのコピーをDockerfileに追記しました。具体的には以下です。

COPY docker-entrypoint.sh / COPY 10-listen-on-ipv6-by-default.sh /docker-entrypoint.d COPY 20-envsubst-on-templates.sh /docker-entrypoint.d COPY 30-tune-worker-processes.sh /docker-entrypoint.d ## 以下に2行追加 COPY nginx.conf /etc/nginx/ COPY index.html /usr/share/nginx/html/ ## ENTRYPOINT ["/docker-entrypoint.sh"]

これによりnginx.confとindex.htmlをdocker内に追加しました。index.htmlはテスト用です。

nginxのリバプロ設定について抜粋します。S3へのプロキシという設定をしています。S3のアドレスにアクセスし、80版でコンテンツが見れていることは確認済みです。

server { listen 80; listen [::]:80; server_name _; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location /example/ { proxy_pass 【s3リージョン名:80/html/】; resolver 8.8.8.8 valid=5s; } error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }

これで
/example/ にリバプロとして動けばよいのですが、なぜか動きませんでした。なおindex.htmlは無事設定したものが表示されているため、dockerのイメージはうまく作れていると思います。また、execコマンドで確認したところ、きちんとnginx.confも/etc/nginx/以下にコピーされておりました。

原因調査をしているのですが、どうにも先に進めなくなってしまったため、御指南いただければと思います。
なおアクセスした際のdocker上に表示されているnginxのコンソールログは以下です。

126.216.10.40 - - [24/Aug/2021:09:33:03 +0000] "GET /example/index.html HTTP/1.1" 404 555 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko ) Chrome/92.0.4515.159 Safari/537.36" "-" 2021/08/24 09:33:03 [error] 31#31: *1 open() "/usr/share/nginx/html/example/index.html" failed (2: No such file or directory), client: 126.216.10.40, server: localhost, reque st: "GET /example/index.html HTTP/1.1", host: "13.114.209.41:8080"

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

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

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

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

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

yukky1201

2021/08/25 01:53

他の設定ファイルはありませんか? いま提示されている設定にはDocumentRootを指定している箇所が見当たらないため、index.htmlは表示されているという点も疑問があります include /etc/nginx/default.d/*.conf; の記述があるので、ほかの設定ファイルで処理されていないでしょうか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問