網(wǎng)站首頁 編程語言 正文
一、前言
我們知道,為了安全考慮,我們一般會(huì)設(shè)置反向代理,用來屏蔽應(yīng)用程序真實(shí)的IP和端口號(hào)。在Linux系統(tǒng)上最常用的反向代理就是Nginx。本篇文章中,我們會(huì)通過Docker容器分別運(yùn)行一個(gè)Nginx容器和一個(gè)ASP.NET Core應(yīng)用程序的容器,然后設(shè)置反向代理。
二、運(yùn)行Nginx容器
1、獲取Nginx鏡像
要運(yùn)行容器,首先需要有相應(yīng)的鏡像,使用下面的命令拉取NGINX鏡像:
docker pull nginx
如圖所示
2、運(yùn)行Nginx容器
獲取Nginx鏡像之后,我們就可以根據(jù)鏡像來運(yùn)行容器
docker run --name=nginx -d -p 4030:80 nginx
上面命令的解釋如下:
- --name:設(shè)置容器的名稱。
- -d:表示在后臺(tái)運(yùn)行容器。
- -p:指定端口映射。4030是宿主機(jī)的端口,80是Nginx容器內(nèi)部的端口。
- nginx:表示根據(jù)nginx鏡像運(yùn)行容器。
如圖所示
然后在瀏覽器里面訪問:
出現(xiàn)上面的截圖,就說明Nginx容器運(yùn)行成功。
三、運(yùn)行ASP.NET Core應(yīng)用程序
1、構(gòu)建ASP.NET Core應(yīng)用程序鏡像
我們在宿主機(jī)上面創(chuàng)建一個(gè)demo目錄,然后在創(chuàng)建一個(gè)ReverseProxy目錄,把發(fā)布后的項(xiàng)目上傳到ReverseProxy目錄下面
上傳項(xiàng)目后的目錄結(jié)構(gòu)
然后我們使用下面的命令創(chuàng)建鏡像
docker build -t reverseproxy .
上面命令的解釋:
- -t:表示給鏡像起一個(gè)名字。
上面命令最后英文狀態(tài)的"."不能省略,表示在當(dāng)前目錄中查找Dockerfile文件。
執(zhí)行過程如下圖所示
執(zhí)行完成以后,我們就可以看到剛才創(chuàng)建的鏡像了
2、運(yùn)行應(yīng)用容器
創(chuàng)建完鏡像以后運(yùn)行容器
docker run --name=reverseproxy -d -p 9020:80 reverseproxy
這里使用宿主機(jī)的9020端口映射到容器內(nèi)的80端口。?
如圖所示
從上圖中我們可以看到容器已經(jīng)在運(yùn)行了,我們在瀏覽器里面訪問,驗(yàn)證容器是否運(yùn)行成功
出現(xiàn)上圖所示的結(jié)果,表明容器運(yùn)行成功。
三、設(shè)置反向代理
在上面的步驟中,我們分別運(yùn)行了nginx容器和ASP.NET Core應(yīng)用程序的容器,并且都可以在瀏覽器里面訪問,下面我們來設(shè)置反向代理。
反向代理實(shí)現(xiàn)如下的效果:在瀏覽器里面訪問4030端口的時(shí)候跳轉(zhuǎn)到9020端口,瀏覽器顯示ASP.NET Core應(yīng)用程序。
配置反向代理,我們需要修改Nginx的配置文件。在Nginx的配置文件里面設(shè)置反向代理的HTTP地址。
要修改Nginx的配置文件,首先需要進(jìn)入Nginx容器里面,使用下面的命令進(jìn)入容器里面
docker exec -it nginx /bin/bash
上面命令的解釋說明:
- -it:表示分配一個(gè)偽終端。
- nginx:表示容器的名稱,這里也可以使用容器ID。
- /bin/bash:表示對容器執(zhí)行bash操作。
執(zhí)行過程如圖所示
上面的截圖中,我們使用ls查看,發(fā)現(xiàn)里面其實(shí)就是一個(gè)Linux操作系統(tǒng)。
Nginx默認(rèn)會(huì)安裝在etc目錄下面
然后進(jìn)入nginx目錄
我們看到了nginx.conf配置文件,需要在這個(gè)配置文件里面設(shè)置反向代理。我們使用vim命令編輯nginx.conf文件:
我們看最后紅框里面的內(nèi)容,表示使用的是conf.d目錄下面的conf文件進(jìn)行配置。我們進(jìn)入conf.d目錄下面,然后編輯default.conf文件。
要配置反向代理,我們首先需要知道要代理的程序的IP地址,所以在修改配置之前,我們首先需要獲取reverseproxy容器的IP地址。
docker inspect 容器名稱
如圖所示
我們會(huì)看到很多信息,這里只需要關(guān)注最后的網(wǎng)絡(luò)配置信息即可
獲取到了容器的IP地址以后,我們就可以配置反向代理了。default.conf文件
因?yàn)槿萜魇莾?nèi)部訪問,所以設(shè)置的端口是80,而不是運(yùn)行容器時(shí)設(shè)置的9020端口。修改完成之后保存退出。
我們可以使用下面的命令檢查一下修改后的配置文件是否有錯(cuò):
nginx -t
如圖所示
如果修改的配置文件沒有錯(cuò)誤,則退出容器。如果修改的配置文件有錯(cuò)誤,要改正錯(cuò)誤,然后退出容器。
由于我們修改了配置,所以需要重新運(yùn)行容器,以便配置生效。
然后我們在瀏覽器里面訪問4030端口
可以看到頁面被代理到了9020端口顯示的內(nèi)容。這樣就實(shí)現(xiàn)了反向代理。
原文鏈接:https://www.cnblogs.com/dotnet261010/p/12596185.html
相關(guān)推薦
- 2022-11-15 python中sample函數(shù)的介紹與使用_python
- 2022-10-17 django如何根據(jù)現(xiàn)有數(shù)據(jù)庫表生成model詳解_python
- 2022-04-09 Spring事務(wù)管理之開啟聲明式事務(wù)
- 2022-04-26 C#新特性之可空引用類型_C#教程
- 2023-07-16 spring boot多模塊打包 運(yùn)行
- 2023-03-29 Python基于ImageAI實(shí)現(xiàn)圖像識(shí)別詳解_python
- 2022-10-01 使用C++實(shí)現(xiàn)插件模式時(shí)的避坑要點(diǎn)(推薦)_C 語言
- 2022-04-14 詳解Redis?鍵和字符串常用命令_Redis
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支