最近在研究docker,在架設(shè)了幾個(gè)網(wǎng)站后,發(fā)現(xiàn)個(gè)問題 宿主機(jī)的80端口只可以綁定一個(gè)容器,并且沒辦法實(shí)現(xiàn)多域名,所以想到了nginx的反代,以下是使用docker架設(shè)nginx反代的筆記。
1.需求:
我的需求,需要將多個(gè)域名解析到同一臺(tái)服務(wù)器上(即宿主機(jī)),并采用nginx反代的方式,將不同的域名和不同的容器端口號(hào)對(duì)應(yīng)映射。
2.技術(shù):
由于現(xiàn)在網(wǎng)站就架設(shè)在docker的容器上,所以我將采用docker進(jìn)行搭建相應(yīng)的配置,采用nginx服務(wù)器做反向代理。
3.實(shí)現(xiàn):
第一步:
安裝docker,如果你的服務(wù)器上還沒有相應(yīng)的docker,可以參考CentOS安裝步驟或者Ubuntu 系列安裝 Docker步驟進(jìn)行安裝。(請自行g(shù)oogle或者使用DaoCloud管理平臺(tái))
第二步:
獲取nginx鏡像,執(zhí)行命令:
docker pull nginx
第三步:
創(chuàng)建并啟動(dòng)nginx容器,執(zhí)行命令:
docker run –name=nginx -p 80:80 -v /nginx/conf.d:/etc/nginx/conf.d -d nginx
此時(shí)你已經(jīng)創(chuàng)建了一下名字為nginx的容器,該容器中/etc/nginx/conf.d目錄下的文件將與宿主機(jī)中/nginx/conf.d目錄下的文件保持同步,而/etc/nginx/conf.d是nginx的站點(diǎn)配置文件夾,下面每一個(gè)conf配置文件各自對(duì)應(yīng)一個(gè)站點(diǎn)。反代的配置也得寫在里面。
第四步:
到此你的nginx容器已經(jīng)創(chuàng)建成功,我們在此修改對(duì)應(yīng)的配置文件即可,例如我現(xiàn)在需要將www.aaa.com的域名路徑指向一個(gè)容器運(yùn)行端口號(hào)8080上,只需要進(jìn)入你宿主機(jī)中/nginx/conf.d目錄中增加一個(gè)文件(命令cd /nginx/conf.d
),文件名字要求必須為.conf格式,例如可以改名為:www.aaa.com.conf(命令vi www.aaa.com.conf
),里面的內(nèi)容如下(自己修改對(duì)應(yīng)的地方,然后粘貼到vi中,按esc 輸入:wq
來保存文件):
server {
listen 80;
server_name www.aaa.com自己域名;
location / {
proxy_pass http://宿主機(jī)ip:容器對(duì)外的端口號(hào);
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
如果你需要多個(gè)域名的配置,只需要在/nginx/conf.d目錄下加相應(yīng)的配置文件即可,一般只需要修改server_name和proxy_pass即可。然后重啟nginx容器,即:
docker restart nginx
打開你的域名即可看到效果,當(dāng)然你得先把域名解析到宿主機(jī)的ip上面。