首頁 > 運維 > Nginx > 使用 nginx 反向代理多個 docker 容器

使用 nginx 反向代理多個 docker 容器

藏色散人
發布: 2019-09-21 10:05:46
轉載
6573 人瀏覽過

導語

之前介紹 docker 的時候就說過它的優點之一,就是可以在同一伺服器中建立多個環境,互相隔離。昨天就實際操作下,萬萬沒想到這麼多的坑,比之前從零開始搭建伺服器都花時間。變換了好幾種方案,最後還是解決了,中間的心酸就忽略吧,直接說操作方法。

推薦教學:nginx教學

架構

伺服器中已存在的是laradock 鏡像,可以運行laravel 環境以及其他的PHP,包含了nginx、mysql、redis 等。

我的想法是再增加一個 nginx 容器,用來做反向代理。根據子網域進行分發,可以分發給laradock,也可以給其他任何容器(包括wordpress、python、java)等等

修改lradock

要修改的只有一個地方,就是nginx 監聽的連接埠。

1.進入laradock 目錄

2.修改.env 文件,修改NGINX_HOST_HTTP_PORT 值由80 為8000

#3.停止nginx,docker-compose stop nginx

4.重裝nginx,docker-compose build nginx

#5.啟動docker-compose up -d nginx

這時候在瀏覽器中是不能存取成功的,因為nginx 已經不再監聽80 埠。

新增 nginx 容器

新新增一個 nginx 容器用來做反向代理。在安裝 laradock 的時候,已經有了 nginx:alpine 的鏡像,可以直接產生容器。當然你也可以重新 pull 一個新的鏡像。 (推薦使用alpine版本)

1.查看nginx 映像ID,docker iamges

2.產生新的ngixn 容器,docker run --name proxy_nginx -p 80:80 -d [nginx image id]。也可以添加-v 參數來映射配置文件,我的環境較少變動就不需要了

3.此時在瀏覽器中訪問,應該是nginx 的默認頁面,說明啟動成功

4.進入到生成的容器中docker exec -it proxy_nginx sh

#5.安裝vim,apk add vim

6.查看宿主機ip,/sbin/ip route| awk '/default/ { print $3 }'

7.在/etc/nginx/conf.d/目錄下新增設定檔laradock.conf,內容如下

server {
    listen  80;
    server_name  you_site;
    location / {
        proxy_set_header  Host  $http_host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass  http://[宿主机IP]:8000;
    }
}
登入後複製

1.退出容器,然後重啟docker restart proxy_nginx

2.打開8000 端口,參考這裡

結語

這個時候訪問的話,就可以代理到laradock中的nginx 了。後續想要新增其他的容器,只要在 proxy_nginx 中新增的代理規則就可以了。

以上是使用 nginx 反向代理多個 docker 容器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板