nginx的反向代理
反向代理的原理
- Nginx是一个高性能的Web服务器,它也可以用作反向代理服务器。当Nginx作为反向代理服务器时,它将客户端的请求转发到后端的服务器,而不是直接向客户端提供服务。
Nginx的反向代理功能是通过配置文件来实现的。在配置文件中,您可以指定哪些请求需要转发到哪个后端服务器,以及如何处理后端服务器的响应。
在反向代理配置中,Nginx需要监听一个端口,以接收来自客户端的请求。这个端口通常是80或443,即HTTP或HTTPS协议的默认端口。当Nginx接收到客户端的请求时,它会根据配置文件中的规则,将请求转发到后端的服务器。
在将请求转发到后端服务器之前,Nginx还可以进行一些处理,例如修改请求头或响应头,以及对请求进行缓存等。这些处理可以提高反向代理服务器的性能和安全性。
当后端服务器响应请求时,Nginx会将响应转发回客户端。在转发响应之前,Nginx也可以进行一些处理,例如修改响应头或对响应进行压缩等。这些处理可以提高响应速度和带宽利用率。
总的来说,Nginx作为反向代理服务器的工作原理是将客户端的请求转发到后端的服务器,并将后端服务器的响应转发回客户端。
使用反向代理
使用若依前后端分离的项目来举例,在若依项目中,默认前端请求验证码的端口是后端的8080,但在开发中,往往8080端口经常容易被占用,需要更改后端的启动端口。
假设我们的后端现在8000端口启动,把前端启动在8001的端口,前端在请求时会请求不到后端。可以使用nginx的反向代理来将8001的请求发送到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/; }