🕌

code-serverをnginxでリバースプロキシ

2021/08/16に公開

code-serverをnginxでリバースプロキシ

  • code-serverの認証はパスワードだけでちょっと不安
  • 前段にnginxコンテナをおいてリバプロするとngixnの機能で認証かけられる
  • nginxでクライアント証明書認証をかけていったりしたい

設定

  • docker-composeで構成
docker-compose.yml
version: '3'
services:
  nginx:
    image: nginx
    ports:
      - '9000:80'
    volumes:
      - ./server.conf:/etc/nginx/conf.d/default.conf

  coder:
    image: codercom/code-server:latest
    volumes: 
      - $HOME/coder:/home/coder/project
      - $HOME/.local/share/code-server:/home/coder/.local/share/code-server
    environment:
      PASSWORD: "ぱすわーど"
  • nginxの設定をserver.confに書いてnginxコンテナマウントする
    • code-serverがwebsocketを使っているのでwebsocket通信もproxyできるようにしないと使えない
server.conf
# $http_upgrade の値と $connection_upgrade の値をmapping
# $http_upgrade が空の時以外は $connection_upgradeは upgradeになる
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server{
  listen       80;
  server_name  example.com(グローバルIP,ホストドメインなど);

  location / {
    proxy_set_header Host $host;  # Host headerを送信元の情報にする
    proxy_pass    http://coder:8080;  # coderコンテナに転送
    
    # web-socket転送の設定
    proxy_set_header Upgrade $http_upgrade;  # web-socket通信に切り替えるヘッダ
    proxy_set_header Connection upgrade;  # 送信元にコネクションを維持するか伝える
    proxy_set_header Accept-Encoding gzip;  # 必須かわからないけど入れてる
  }
}

参考

Discussion