使用Docker實(shí)現(xiàn)Nginx反向代理
本機(jī)是在CentOS7上面進(jìn)行操作的
1.首先安裝好Dokcer,這里不再贅述
2.Docker安裝Nginx容器
2.1首先需要?jiǎng)?chuàng)建Nginx配置文件,之后完成掛載
啟動(dòng)前需要先創(chuàng)建Nginx外部掛載的配置文件( /home/nginx/conf/nginx.conf)
之所以要先創(chuàng)建 , 是因?yàn)镹ginx本身容器只存在/etc/nginx 目錄 , 本身就不創(chuàng)建 nginx.conf 文件
當(dāng)服務(wù)器和容器都不存在 nginx.conf 文件時(shí), 執(zhí)行啟動(dòng)命令的時(shí)候 docker會(huì)將nginx.conf 作為目錄創(chuàng)建 , 這并不是我們想要的結(jié)果 。
# 創(chuàng)建掛載目錄 mkdir -p /home/nginx/conf mkdir -p /home/nginx/log mkdir -p /home/nginx/html
# 生成容器 docker run --name nginx -p 9001:80 -d nginx
然后將nginx中的配置文件復(fù)制到外部環(huán)境
# 將容器nginx.conf文件復(fù)制到宿主機(jī) docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf # 將容器conf.d文件夾下內(nèi)容復(fù)制到宿主機(jī) docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d # 將容器中的html文件夾復(fù)制到宿主機(jī) docker cp nginx:/usr/share/nginx/html /home/nginx/
# 刪除正在運(yùn)行的nginx容器 docker rm -f nginx
2.2重新啟動(dòng)nginx容器
docker run -p 9002:80 --name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -d nginx:latest
命令介紹:
- –name nginx 啟動(dòng)容器的名字
- -d 后臺(tái)運(yùn)行
- -p 9002:80 將容器的 9002(后面那個(gè)) 端口映射到主機(jī)的 80(前面那個(gè)) 端口
- -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf 掛載nginx.conf配置文件
- -v /home/nginx/conf/conf.d:/etc/nginx/conf.d 掛載nginx配置文件
- -v /home/nginx/log:/var/log/nginx 掛載nginx日志文件
- -v /home/nginx/html:/usr/share/nginx/html 掛載nginx內(nèi)容
- nginx:latest 本地運(yùn)行的版本
- \ shell 命令換行
2.3瀏覽器輸入http:ip:9002訪問,發(fā)現(xiàn)是nginx首頁,安裝成功
3.安裝Tomcat鏡像
下載tomcat8
docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8
然后進(jìn)行訪問,如果訪問不到,原因是
新版tomcat的/bin/bash目錄下有webapps和webapps.dist兩個(gè)目錄
webapps里面沒有任何東西 total為0,實(shí)際有東西的是webapps.dist目錄下
rm -rf webapps #刪除webapps文件夾
mv webapps.dist webapps #改名為webapps
重啟tomcat進(jìn)行訪問,發(fā)現(xiàn)可以訪問到了
4.配置Nginx文件
效果:訪問http://ip:9002/可以看到tomcat的首頁
原效果:訪問http://ip:9002/看到的是nginx的首頁
cd /home/nginx/conf

在http下面添加如下代碼:
server{
?????? #監(jiān)聽的端口 本例中9002監(jiān)聽nginx80端口,所以這里寫80
?????? listen 80;
?????? #字符格式
?????? charset utf-8;
?????? #當(dāng)前的服務(wù)器ip
?????? server_name ip;
?????? location / {
????????? #要代理去哪個(gè)服務(wù)器的ip以及端口
????????? proxy_pass http://ip:8080;
????????? #被代理服務(wù)器返回默認(rèn)的響應(yīng)頭中的location頭域以及refresh頭域數(shù)值
????????? proxy_redirect default;
?????? }
}重啟nginx
docker restart nginx
訪問http://ip:9002/可以看到tomcat的首頁
5.拓展
要達(dá)到的效果:
1.再創(chuàng)建兩個(gè)tomcat容器,和上面一樣進(jìn)行配置,一個(gè)為8081端口,一個(gè)為8082端口
2.在這兩個(gè)tomcat里創(chuàng)建不同的目錄,里面放一個(gè)html文件
3.配置nginx
4.訪問http://ip/edu/a.html訪問到的是8081的html
5.訪問http://ip/vod/a.html訪問到的是8082的html
#創(chuàng)建好兩個(gè)tomcat容器后,進(jìn)入容器 docker exec -it 容器ID /bin/bash cd webapps mkdir edu #8081端口的容器創(chuàng)建這個(gè),8082的創(chuàng)建名為vod的目錄 vim a.html #如果沒有vim則安裝一個(gè),其他方法也行,搞個(gè)html進(jìn)去就行 apt-get update apt-get install vim
a.html 里簡單寫個(gè)<h1>端口號(hào)</h1>就行,只是看效果
重啟這幾個(gè)tomcat容器,訪問發(fā)現(xiàn)成功
最后配置nginx配置文件
http下面添加:
server{
#監(jiān)聽的端口
listen 9001;
#字符格式
charset utf-8;
#當(dāng)前的服務(wù)器ip
server_name ip;
location ~ /edu/ {
#要代理去哪個(gè)服務(wù)器的ip以及端口
proxy_pass http://ip:8081;
#被代理服務(wù)器返回默認(rèn)的響應(yīng)頭中的location頭域以及refresh頭域數(shù)值
proxy_redirect default;
}
location ~ /vod/ {
#要代理去哪個(gè)服務(wù)器的ip以及端口
proxy_pass http://ip:8082;
#被代理服務(wù)器返回默認(rèn)的響應(yīng)頭中的location頭域以及refresh頭域數(shù)值
proxy_redirect default;
}
}重啟nginx,訪問,發(fā)現(xiàn)成功。

ps 這個(gè)8001是我寫錯(cuò)了,看效果就行

到此這篇關(guān)于使用Docker實(shí)現(xiàn)Nginx反向代理的文章就介紹到這了,更多相關(guān)Docker Nginx反向代理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx 根據(jù)URL帶的參數(shù)轉(zhuǎn)發(fā)的實(shí)現(xiàn)
這篇文章主要介紹了Nginx 根據(jù)URL帶的參數(shù)轉(zhuǎn)發(fā)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
接口服務(wù)在Nginx中提示HTTP 499問題的排查步驟
本文詳細(xì)介紹了如何在Nginx中啟用請(qǐng)求時(shí)間日志以及如何在沒有該日志的情況下通過替代方法排查HTTP499問題,重點(diǎn)討論了前端超時(shí)配置差異和請(qǐng)求參數(shù)導(dǎo)致的文件大小差異,并提供了具體的排查步驟,需要的朋友可以參考下2026-03-03
nginx-rtmp-module模塊實(shí)現(xiàn)視頻點(diǎn)播的示例代碼
本文主要介紹了nginx-rtmp-module模塊實(shí)現(xiàn)視頻點(diǎn)播,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
Nginx+Keepalived實(shí)現(xiàn)雙機(jī)熱備
這篇文章主要介紹了Nginx+Keepalived實(shí)現(xiàn)雙機(jī)熱備,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06
Nginx中實(shí)現(xiàn)請(qǐng)求的緩存數(shù)據(jù)過期通知
Nginx 作為高性能的反向代理服務(wù)器,緩存機(jī)制是其優(yōu)化性能的重要手段之一,本文主要介紹了Nginx中實(shí)現(xiàn)請(qǐng)求的緩存數(shù)據(jù)過期通知,感興趣的可以了解一下2024-09-09
Nginx內(nèi)網(wǎng)單機(jī)反向代理的實(shí)現(xiàn)
本文主要介紹了Nginx內(nèi)網(wǎng)單機(jī)反向代理的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
nginx使用replace-filter-nginx-module實(shí)現(xiàn)內(nèi)容替換的示例
本篇文章主要介紹了nginx使用replace-filter-nginx-module實(shí)現(xiàn)內(nèi)容替換的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03
基于Xen的VPS ubuntu+nginx+php安裝教程
跟蹤vps已經(jīng)很久了,但是因?yàn)樾枰厥舛丝陂_服務(wù),所以符合條件的多為Xen平臺(tái)的vps。眾多比較之后選擇了vpslink在西雅圖機(jī)房,速度還不錯(cuò)。2010-07-07
Nginx FastCGI緩存的實(shí)現(xiàn)示例
Nginx的FastCGI緩存是一種性能優(yōu)化手段,通過緩存動(dòng)態(tài)內(nèi)容減少對(duì)后端服務(wù)器的請(qǐng)求,提高系統(tǒng)響應(yīng)速度,具有一定的參考價(jià)值,感興趣的可以了解一下2024-12-12

