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