장래에 도커 - 머신으로 여러 사이트를 호스팅해야하지만 localhost에서 시작하려고합니다.Docker NGINX 이미지로 도메인 이름을 가진 컨테이너 몇 개를 제공하는 방법
127.0.0.1 localhost
255.255.255.255 broadcasthost
127.0.0.1 dev.proling.ru
127.0.0.1 dev.vshvetsov.ru
이 구성은 독립적으로 선택된 도메인과 사이트 나에 대한 액세스를 제공합니다
주요 목적은 물론 나는 아래에 나열되어, OS X 내 /etc/hosts
파일을 시작할 필요가 특정 사이트를 얻을 수 있습니다 의 DNS 설정.
version: '2'
services:
mysql:
build: mysql/
restart: always
volumes:
- mysql_data:/var/lib/mysql
container_name: mysql
vshvetsov:
depends_on:
- mysql
build: vshvetsov/
ports:
- 8000:80
restart: always
container_name: vshvetsov
proling:
depends_on:
- mysql
build: proling/
ports:
- 8003:80
restart: always
container_name: proling
nginx:
depends_on:
- proling
- vshvetsov
image: nginx
restart: always
ports:
- "80:80"
volumes:
- ./nginx/volume:/etc/nginx
container_name: nginx
volumes:
mysql_data:
두 사이트 컨테이너 localhost:8000
및 localhost:8003
에 완벽하게 작동하고 아래에있는 내 nginx/volume
폴더 트리입니다 : 내 Nginx의 구성에 영향을 미칠 수있는 유일한 방법은 그래서
volume
├── conf.d
│ ├── default.conf
│ ├── proling.ru
│ └── vshvetsov.ru
├── fastcgi_params
├── koi-utf
├── koi-win
├── mime.types
├── modules -> /usr/lib/nginx/modules
├── nginx.conf
├── scgi_params
├── uwsgi_params
└── win-utf
지금은 내 docker-compose.yml
가 보여 드리죠 아래 conf.d
디렉토리에 .conf
파일을 배치하고 그들 모두 :
dev.proling.ru
server {
listen 80;
server_name www.proling.ru;
rewrite^http://proling.ru$request_uri? permanent; #301 redirect
}
server {
listen 80;
server_name proling.ru *.proling.ru;
location/{
proxy_pass http://proling;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
access_log /var/log/nginx/proling.ru-access.log;
}
}
그리고 dev.vshvetsov.ru
server {
listen 80;
server_name www.vshvetsov.ru vshvetsov.ru dev.vshvetsov.ru;
location/{
proxy_pass http://vshvetsov;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
access_log /var/log/nginx/vshvetsov.ru-access.log;
}
}