麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網(wǎng)站 > Nginx > 正文

使用Nginx實(shí)現(xiàn)服務(wù)器中多容器共存的方法

2024-08-30 12:29:56
字體:
供稿:網(wǎng)友

背景

有一臺騰訊的Linux云主機(jī),在服務(wù)器上部署了一個(gè)docker(稱為ServiceDocker,名稱為sign,下同),ServiceDocker內(nèi)部使用了80、443、3306端口,分別映射到宿主機(jī)(云主機(jī))的相同端口(即80、443、3306)。

ServiceDocker中安裝了XAMPP,在此基礎(chǔ)上部署了掃碼簽到小程序的服務(wù)器。ServiceDocker的80和443端口分別提供http和https服務(wù),3306為MySQL數(shù)據(jù)庫的端口。

ServiceDocker綁定了域名sign.famend.cn。

目標(biāo)

云主機(jī)中的一個(gè)ServiceDocker占用了80、443端口,如果想在主機(jī)中再部署一臺服務(wù)器對外服務(wù),就不能使用80和443端口了。

我們的目標(biāo)是在主機(jī)中可以部署多個(gè)ServiceDocker,每個(gè)ServiceDocker綁定各自的域名,對外提供服務(wù),保證80和443端口可用。

思路

修改ServiceDocker的端口映射,把ServiceDocker端口80、443分別映射到主機(jī)的89、449端口,這樣主機(jī)的80、443端口釋放出來了。

釋放出來的80和443端口供Nginx使用。安裝帶Nginx的docker(稱為NginxDocker,名稱為mynginx,下同)。NginxDocker內(nèi)部使用端口80、443,分別映射到主機(jī)的80和443端口。

NginxDocker用來做反向代理。當(dāng)有訪問請求時(shí),讀取Nginx配置后,不同的URL定向到各自對應(yīng)的Docker。例如:訪問http://sign.famend.cn:80,則自動映射到http://sign.famend.cn:89。

實(shí)現(xiàn)步驟

1. 修改ServiceDocker的端口映射,釋放80和443端口。

Docker沒有提供命令修改端口,從網(wǎng)上我找到了2種方法。

方法1:先停止容器,再將容器打包成鏡像,接著運(yùn)行新的鏡像。在運(yùn)行新的鏡像時(shí)指定新的端口。使用的命令如下:

#先停止容器 docker stop containerA #將容器commit成為一個(gè)鏡像 docker commit containerA newImageB #運(yùn)行容器 docker run -p 8080:8080 -p 8081:8081 -v /home/data/:/home/data/ -dt newImageB 

方法2:先停止容器,接著停止容器服務(wù),然后修改容器配置文件,最后啟動容器服務(wù)、啟動容器。步驟如下:

①停止ServiceDocker(ServiceDocker的名稱為sign),停止docker服務(wù)。

sudo docker stop sign sudo service docker stop 

②使用 docker ps -a 命令找到要修改容器的 CONTAINER ID。

③運(yùn)行 docker inspect 【CONTAINER ID】 | grep Id 命令。

④執(zhí)行 cd /var/lib/docker/containers 命令令進(jìn)入找到與 Id 相同的目錄。

在執(zhí)行cd 命令時(shí)如果提示permission denied,可以先執(zhí)行 sudo -s。

進(jìn)入id對應(yīng)的目錄后,打開文件hostconfig.json。

找到80端口的映射,如下:

"80/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "80" }]  把 "HostPort": "80" 修改成 "HostPort": "89" , 如下 "80/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "89" }]

修改之前,ServiceDocker內(nèi)部的80端口映射為主機(jī)的80端口;修改之后,ServiceDocker內(nèi)部的80端口映射為主機(jī)的89端口。

稍加說明,有文章(參考資料中的2、3)提到還需要修改config.v2.json,親測不需要。這個(gè)文件在啟動ServiceDocker時(shí)會自動修改。

⑤啟動docker服務(wù),然后啟動ServiceDocker(名稱為sign)。

sudo service docker start sudo docker start sign 

方法(1)和方法(2)都可以,我選用了方法(2)。

在執(zhí)行完方法(2)之后,打開瀏覽器驗(yàn)證,提示“網(wǎng)站無法訪問”。

初步估計(jì)docker中的服務(wù)器沒有啟動,運(yùn)行命令:

sudo /opt/lampp/lampp stop sudo /opt/lampp/lampp start 

運(yùn)行stop的時(shí)候,發(fā)現(xiàn)apache 沒有啟動,可能是修改了80端口的緣故。

在執(zhí)行start之后,打開瀏覽器驗(yàn)證http://sign.famend.cn:89和https://sign.famend.cn:449,成功訪問。

修改Docker端口的方法并不復(fù)雜,如果docker以后的版本能夠提供相應(yīng)命令,相信會方便很多。

順便,運(yùn)行 crontab -l 查看ServiceDocker中的定時(shí)任務(wù)是否啟動,如果沒啟動,運(yùn)行 service cron start 啟動定時(shí)任務(wù)。

下一步,配置NginxDocker反向代理,讓http://sign.famend.cn:80和https://sign.famend.cn:443也能成功訪問。

2. 配置NginxDocker反向代理。

①下載nginx,并運(yùn)行它。

docker container run /  -d /  -p 80:80 /  -p 443:443 /  --rm /  --name mynginx /  nginx 

②配置nginx的配置文件。

mkdir nginx-files docker container cp mynginx:/etc/nginx . mv nginx conf vi conf/nginx.conf 

在nginx.conf中,添加如下反向代理信息。

server{  listen     443 ssl;  server_name   sign.famend.cn;  ssl_certificate /etc/nginx/ssl/sign.famend.cn/1_sign.famend.cn_bundle.crt;  ssl_certificate_key /etc/nginx/ssl/sign.famend.cn/2_sign.famend.cn.key;   location / {   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_set_header X-Forwarded-Proto $scheme;   proxy_pass http://sign.famend.cn:89/;  } }  server{  listen     80;  server_name   famend.cn sign.famend.cn;  location / {   proxy_set_header HOST $host;   proxy_set_header X-Real-IP $remote_addr:89;   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   proxy_set_header X-Forwarded-Proto $scheme;   proxy_pass http://sign.famend.cn:89/;  } } 

對于443端口,需要使用ssl_certificate和ssl_certificate_key。在ServiceDocker中證書使用的LetsEncrypt的SSL證書,每90天更新一次。

SSL證書的來源:一種方法,可以讓它們共享LetsEncrypt的SSL證書。除此之外,在騰訊注冊的域名,騰訊免費(fèi)提供SSL證書,有效期為1年。

為了簡便,我直接使用了騰訊的SSL證書,當(dāng)然,一年之內(nèi),必須在過期之前更新證書。

③停止mynginx,然后重啟它。

docker container run /  --name mynginx /  --volume "$PWD/conf":/etc/nginx /  -p 80:80 /  -p 443:443 /  -d /  nginx 

這次,去掉 --rm 參數(shù),以便停止運(yùn)行的時(shí)候保留容器。

至此,配置完成。

驗(yàn)證

瀏覽器中分別打開

sign.famend.cn:80 sign.famend.cn:89 sign.famend.cn:449 sign.famend.cn:443 

都能正常訪問。當(dāng)然,打開449和443時(shí)候,可以發(fā)現(xiàn)兩個(gè)URL使用的證書不一樣。449是LetsEncrypt提供的,有效期90天;443來自騰訊(頒發(fā)機(jī)構(gòu)TrustAsia),有效期1年。

當(dāng)然,ServiceDocker中的另外一個(gè)網(wǎng)站famend.cn,也可以訪問:

famend.cn:80 
famend.cn:89

總結(jié)

以上所述是小編給大家介紹的使用Nginx實(shí)現(xiàn)服務(wù)器中多容器共存的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對VEVB武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識閱讀請移步到服務(wù)器教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 免费看黄色一级大片 | 欧美性生话视频 | 亚洲成人免费电影 | 国产乱淫a∨片免费观看 | 亚洲天堂一级片 | 久草成人在线 | 久久综合一区 | 亚洲综合精品 | 久久蜜桃精品一区二区三区综合网 | 亚洲精品一区二区三区免 | 久久中文免费 | 麻豆视频在线观看 | 一级在线观看 | 国产九色在线观看 | 亚洲国产视频网 | 亚洲成人在线视频网站 | 亚洲一区在线国产 | 精国产品一区二区三区 | 成人爱爱电影 | 北原夏美av | 成av在线 | 一级免费大片 | 国产乱淫a∨片免费观看 | av在线播放电影 | 国产亚洲欧美在线视频 | 黄视频免费在线 | 国产大片全部免费看 | 欧美日韩在线播放 | 99成人精品视频 | 欧美中文字幕一区二区三区亚洲 | 激情视频免费看 | 色淫影院 | 91精品国产综合久久久欧美 | 成人av一二三区 | 黄色7777| 日本视频免费看 | 欧美一级免费高清 | 欧美精品久久久久久久久久 | 国产午夜三级一区二区三桃花影视 | 久久久tv | 国产精品99精品 |