通俗易懂的 Nginx 反向代理 配置
首先 root 与 alias 的区别
- root 是直接拼接 root + location
location /i/ {
root /data/w3;
}
当请求 /i/top.gif ,/data/w3/i/top.gif 会被返回。
- alias 是用 alias 替换 location
location /i/ {
alias /data/w3/images/;
}
当请求 /i/top.gif ,/data/w3/images/top.gif 会被返回
Nginx 反向代理 解决跨域
假设页面地址:http://192.168.31.115:8080
假设请求接口地址:http://v.juhe.cn/laohuangli/d?date=2014-09-09&key=dae46b9a6abb27fecaace80f47624f
配置Nginx
server {
listen 8088;
server_name 192.168.31.115;
location / {
proxy_pass http://192.168.31.115:8080/; //反向代理
}
location /laohuangli {
proxy_pass http://v.juhe.cn/laohuangli;
}
}
将页面地址代理到8088端口,将接口地址也代理到8088端口
页面中请求接口
fetch('http://192.168.31.115:8088/laohuangli/d?date=2014-09-09&key=dae46b9a6abb27fecaace80f47624f').then(res=>res.json()).then(res=>{
console.log(res)
})
访问页面:http://192.168.31.115:8088/
-
server 块
整个配置被包裹在一个 server 块内,这意味着以下所有配置都是针对这个特定的服务器实例的。 -
listen 8088;
作用:指定 Nginx 监听的端口号为 8088。
说明:当客户端访问服务器的 192.168.31.115 地址时,需要通过端口 8088 来访问这个服务。例如,访问 http://192.168.31.115:8088。 -
server_name 192.168.31.115;
作用:定义服务器的名称为 192.168.31.115。
说明:server_name 用于区分不同的虚拟主机。当请求的 Host 头部与这里指定的 server_name 匹配时,Nginx 会使用这个服务器块来处理请求。
反向代理的优势
- **安全性:**后端服务器的详细信息对客户端隐藏,提升了安全性。
- **负载均衡:**可以将请求分发到多台后端服务器,提升处理能力。
- **缓存:**Nginx可以缓存后端服务器的响应,减少后端负载,提高响应速度。
- 统一入口:所有请求通过 Nginx 进行管理,便于统一配置
SSL、压缩、限流等功能。