nginx的反向代理
反向代理的原理
- Nginx是一個高性能的Web服務器,它也可以用作反向代理服務器。當Nginx作為反向代理服務器時,它將客戶端的請求轉發(fā)到后端的服務器,而不是直接向客戶端提供服務。
Nginx的反向代理功能是通過配置文件來實現的。在配置文件中,您可以指定哪些請求需要轉發(fā)到哪個后端服務器,以及如何處理后端服務器的響應。
在反向代理配置中,Nginx需要監(jiān)聽一個端口,以接收來自客戶端的請求。這個端口通常是80或443,即HTTP或HTTPS協議的默認端口。當Nginx接收到客戶端的請求時,它會根據配置文件中的規(guī)則,將請求轉發(fā)到后端的服務器。
在將請求轉發(fā)到后端服務器之前,Nginx還可以進行一些處理,例如修改請求頭或響應頭,以及對請求進行緩存等。這些處理可以提高反向代理服務器的性能和安全性。
當后端服務器響應請求時,Nginx會將響應轉發(fā)回客戶端。在轉發(fā)響應之前,Nginx也可以進行一些處理,例如修改響應頭或對響應進行壓縮等。這些處理可以提高響應速度和帶寬利用率。
總的來說,Nginx作為反向代理服務器的工作原理是將客戶端的請求轉發(fā)到后端的服務器,并將后端服務器的響應轉發(fā)回客戶端。
使用反向代理
使用若依前后端分離的項目來舉例,在若依項目中,默認前端請求驗證碼的端口是后端的8080,但在開發(fā)中,往往8080端口經常容易被占用,需要更改后端的啟動端口。
假設我們的后端現在8000端口啟動,把前端啟動在8001的端口,前端在請求時會請求不到后端。可以使用nginx的反向代理來將8001的請求發(fā)送到8000。
使用docker-compose在啟動時,映射nginx的nginx-default.conf文件,并映射前端dist到nginx的html
version: '3'
services:
ui:
image: nginx
container_name: ruoyi-ui
ports:
- 8001:80
volumes:
- "$PWD/nginx-default.conf:/etc/nginx/conf.d/default.conf"
- "$PWD/dist:/usr/share/nginx/html"
在這個docker-compose里我們啟動了一個nginx的容器并設置了兩個卷的映射路徑。
在nginx-default-conf里寫反向代理的端口
location /prod-api/ { proxy_pass http://[ip]:8000/; }