構成
サーバサイド(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にアクセスできるでしょうか?
回答1件
あなたの回答
tips
プレビュー