LoginSignup
1
1

docker composeに対してlocalhostのみアクセス出来るようにしたい!

Posted at

やりたいこと

vps内でnginxとdocker composeを起動させ、nginxを介さないとdocker composeにアクセス出来ないようにしたい。

前提条件

vps
nginxはvpsに直接インストールされている。
docker composeではweb serverが起動している。

なぜ記事を書いたのか

まじで見つからなかった。みんなiptableに穴開ける方法かdocker compose内でnginx立てる方法ぐらいしか語ってない。どうして...。

そんな私の備忘録的な記事になります。

解決法

簡単でした。docker-compose.ymlでport指定するときに127.0.0.1:8000:8000とするだけでした。

以下の画像はswagger-uiを構築した時のdocker composeです。参考程度に...。

  swagger-ui:
    image: swaggerapi/swagger-ui
    container_name: "swagger-ui"
    ports:
      - "127.0.0.1:12360:8080"
    volumes:
      - ./api/openapi.yaml:/openapi.yaml
    environment:
      SWAGGER_JSON: /openapi.yaml

結論からすればnetworkを定義する必要もなければ、internal指定をする必要もなかったわけですね。

nginx側では、普通にlocalhostに通信を流してあげれば出来ました。
便利!

location / {
    proxy_pass http://localhost:12360/;
    proxy_http_version 1.1;
    client_max_body_size 150M;
    proxy_connect_timeout 300;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1