Docker中配置nginx
Published in
4 min readNov 23, 2017
環境:ubuntu
情境:連接到同一個網站時根據不同網址連線到不同的container server,不同的server 有不同的port,分別為port 3000、3001、3002,
其中port 3000 和 port 3001 為api server, port 3002 為web
下載nginx image (nginx 官方docker hub)
$ docker pull nginx
執行 nginx image,需把 80 port 接出來
$ docker run — name nginx -d -p 80:80 nginx
查看container
$ docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a59b572d9caf nginx “nginx -g ‘daemon …” 22 minutes ago Up 22 minutes 0.0.0.0:80->80/tcp nginx
進入容器修改nginx 設定
$ docker exec -it a59b572d9caf bash
設定檔位置
/etc/nginx/conf.d/default.conf
修改default.conf
$ vim default.conf
default.conf 內容修改為如下
server {
listen 80;
server_name drupal1.tw;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
send_timeout 300; location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://172.17.0.4:3002;
} location /api/1.0.0/book {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://172.17.0.2:3000;
} location /api/1.0.0/member {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://172.17.0.2:3000;
} location /api/1.0.0/category {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://172.17.0.3:3001;
}
}
設定檔內容
proxy_pass http://172.17.0.2:3000;
proxy_pass http://172.17.0.3:3000;
proxy_pass http://172.17.0.4:3000;
此處網址為container 互相連接溝通使用的ip
查看container ip
$ docker inspect containerId
儲存完設定檔後,重啟nginx
$ service nginx reload
重啟後nginx則可正常運作連線
Author : Tom Hsieh (tom@appmaster.cc)