Nginx 反向代理
大约 1 分钟
Nginx 反向代理
即使前端页面和接口页面的路径相同,由于运行在不同的端口上,浏览器就会认为它们是两个不同的资源。因此不会互相干扰,后端接口不带/api前缀也行
例如:前端在80端口,后端在9999端口,此时访问前端页面时不会意外地访问后端接口。
后端API代理详细解读:把前端请求转发到对应后端的接口请求路径
location /api 意为匹配前端发送的请求带/api的部分。proxy_pass http://tcsday.com:9999/api 即为把api路径反向代理到此处。
2.前端带/api,后端不带/api
前端发送请求:/api/user/list
后端实际接口:http://tcsday.com:9999/user/list
好处:用户查看浏览器发送的请求是带了/api的路径,由于使用了代理,此时用户永远不知道后端的真实接口地址
代理配置:
location /api {
proxy_pass http://tsyday.com:9999;
}
2.前端和后端都带/api
例如:
1.前端点击页面发送的某一个请求为 /api/user/list 获取用户列表
2.后端获取用户列表接口为 http://tcsday.com:9999/api/user/list
3.此时按照配置进行了反向代理后,当前端点击发送请求则把 /api 代理变成了 http://tcsday.com:9999/api
所以进行路径拼接后,前端最终发送的请求为 http://tcsday.com:9999/api/user/list
server {
listen 80;
server_name localhost;
//即使是Docker完成卷挂载也要使用容器内部的地址
root /usr/share/nginx/html/tsy-store-admin;
index index.html;
location / {
try_files $uri /index.html;
}
location /api/ {
proxy_pass http://tcsday.com:9999/api;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}