nginx on docker で複数のサイトをホスティングする

スポンサーリンク
プログラミング

一つのサーバーで複数のサイトをホスティングしたかったのでやってみた。
もともとdockerでnginxを動かして配信していたので、dockerを使う。

nginx-proxy

nginx-proxyを設置する。

version: '2'

services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    privileged: true
    ports:
      - 80:80
      - 443:443
    volumes:
      - /srv/docker/nginx-proxy-with-encrypt/certs:/etc/nginx/certs:ro
      - /etc/nginx/vhost.d
      - /usr/share/nginx/html
      - /var/run/docker.sock:/tmp/docker.sock:ro
    networks:
      - common_link
    restart: always

  letsencrypt-nginx:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: letsencrypt-nginx
    privileged: true
    volumes:
      - /srv/docker/nginx-proxy-with-encrypt/certs:/etc/nginx/certs:rw
      - /var/run/docker.sock:/var/run/docker.sock:ro
    volumes_from:
      - nginx-proxy
    networks:
      - common_link
    restart: always

networks:
  common_link:
    external: true

ホスティングするサイトのNginx

server {
    listen       80;
    listen       443;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html;
    }

    error_page  404 /404.html;
    location = /40x.html {
        root   /usr/share/nginx/html;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
version: '2'
services:
  nginx:
    image: nginx:latest
    container_name: "site1"
    volumes:
      - ./public:/usr/share/nginx/html
      - ./default.conf:/etc/nginx/conf.d/default.conf 
    environment:
      VIRTUAL_HOST: site1.example.com
      LETSENCRYPT_HOST: site1.example.com
      LETSENCRYPT_EMAIL: [email protected]
    restart: always
    networks:
      - common_link

networks:
  common_link:
    external: true

Host名を他のものに変えれば、他のドメインのサイトを立てられます。

github

nozo-moto/nginx_multi_site_try
Contribute to nozo-moto/nginx_multi_site_try development by creating an account on GitHub.
スポンサーリンク

参考

コメント

タイトルとURLをコピーしました