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

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

新規登録して質問してみよう
ただいま回答率
85.47%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

nginx

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

Docker

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

Q&A

解決済

1回答

4254閲覧

dockerのnginxでIP制限がかけられない

umaaaaa

総合スコア15

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

nginx

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

Docker

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

0グッド

0クリップ

投稿2020/01/08 09:50

構成

サーバサイド(django)、フロントエンド(Nuxt.js)、サーバ(nginx)
上記のものをすべてdocker-composeしています。

これらを、AmazonLightsail(VPS)上で動かしています。

nginxのDockerfile

Dockerfile

1FROM nginx 2COPY ./default.conf /etc/nginx/conf.d/default.conf

nginxのdefault.conf

default.conf

1upstream backend { 2 server backend:8000; 3} 4 5upstream frontend { 6 server frontend:3000; 7} 8 9server{ 10 listen 8080 default_server; 11 allow xxx.xxxx.xxx.xxx; 12 deny all; 13 14 location / { 15 proxy_pass http://frontend; 16 } 17 18 location /api { 19 proxy_pass http://backend; 20 } 21 22 location /admin { 23 proxy_pass http://backend; 24 } 25 26 location /static/ { 27 proxy_pass http://backend; 28 } 29}

困っていること

前述の通り、docker上に構築したnginxで、IP制限をかけようとしています。しかしIP制限をかけようとすると、指定したグローバルIPからも接続できず、403が表示されてしまいます。

アクセスログを見ると、次のようなアクセスログが出ます。(xxx.xxx.xxx.xxxが実際に指定したグローバルIP)

nginx_1 | 2020/01/08 09:47:46 [error] 6#6: *5 access forbidden by rule, client: 172.18.0.4, server: , request: "GET / HTTP/1.0", host: "ここにドメインが表示されています" nginx_1 | 172.18.0.4 - - [08/Jan/2020:09:47:46 +0000] "GET / HTTP/1.0" 403 555 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" "xxx.xxx.xxx.xxx" nginx_1 | 2020/01/08 09:47:46 [error] 6#6: *6 access forbidden by rule, client: 172.18.0.4, server: , request: "GET /favicon.ico HTTP/1.0", host: "ここにURLが表示されています", referrer: "ここにドメインが表示されています" nginx_1 | 172.18.0.4 - - [08/Jan/2020:09:47:46 +0000] "GET /favicon.ico HTTP/1.0" 403 555 "ここにURLが表示されています" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" "xxx.xxx.xxx.xxx"

dockerの内部的なIP(?)である172.18.0.4からのアクセスとなっているようでした。(自分なりの憶測)

どうすれば、実際にアクセスしているグローバルIPで、docker内のnginxにアクセスできるでしょうか?

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

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

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

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

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

yuicho

2020/04/27 16:12

dockerコンテナのnginxにグローバルからアクセスしているということは、何らかの方法で外部に公開させていると思うのですが、どうやっておられますか?
yuicho

2020/04/27 16:13

すみません、解決済みでしたね、無視してください
guest

回答1

0

ベストアンサー

投稿2020/01/08 10:17

scsi

総合スコア2840

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

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

umaaaaa

2020/01/09 00:56

djangoやNuxt.jsもきちんとnginxに載せないといけないということでしょうか?現在、docker-composeで、 `command: python backend/manage.py runserver 0.0.0.0:8000` としてdjangoを動かしています。 設定ファイルを書かないといけないので、djangoやnuxt.jsのようなアプリケーションもきちんとnginxに載せないといけないのですよね?
scsi

2020/01/09 03:27 編集

アプリケーションでサーバ側のnginxに接続元IP情報をヘッダに追加して渡せればいいのかな。jsは詳しくないのでできるのかはわかりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問