以我的ghost博客為例進行說明,我在VPS上用docker啟動了兩個ghost博客,還有一個Nginx做反向代理,將兩個域名分別指向兩個博客。
docker啟動命令
ghost:
docker run -e NODE_ENV=production --name ghost1 -v /path/to/data/ghost/ghost1/:/var/lib/ghost -d ghostdocker run -e NODE_ENV=production --name ghost2 -v /path/to/data/ghost/ghost2/:/var/lib/ghost -d ghost
nginx:
先啟動兩個ghost,然后啟動nginx。使用--link參數將容器“鏈接”到一起,此參數會在容器中加入環境變量并在/etc/hosts中插入一條容器名與IP的映射
root@fabfd4bacfda:/# cat /etc/hosts172.17.0.3 ghost1 d19c0134011a172.17.0.5 ghost2 0e2e66ba70e0172.17.0.4 fabfd4bacfda
設置nginx反向代理
修改nginx.conf,在http段內添加如下內容
http { server { listen 80; server_name www.domain1.tk domain1.tk; location / { proxy_pass http://ghost1:2368; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } server { listen 80; server_name www.domain2.tk domain2.tk; location / { proxy_pass http://ghost2:2368; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }}
注意proxy_pass的值proxy_pass http://ghost2:2368;。 ghost2是nginx容器/etc/hosts中的一條,是由--link參數添加進來的。
設置完這些后,nginx就會將兩個域名的請求分別代理到兩個博客中。
補充
容器重啟后IP可能變化,所以直接在nginx.conf中指定IP并不是一個好方法。使用--link時hosts文件會隨著容器IP的變化更新,所以使用域名才是更容易維護的方法。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答
圖片精選