您的位置:首页 > 运维架构 > 反向代理

Nginx正向代理与反向代理

2020-04-22 02:47 1286 查看
  • 正向代理: 对于客户端,我的请求到达Nginx,Nginx把我的请求分配到外部服务器,隐藏了服务端的身份
  • 反向代理: 服务端向外部客户端提供服务,但是任务是由Nginx下发的,不知道客户端是谁
location / {
: proxy_pass http://localhost:8000;       # 设定请求跳转后的地址,可以使用 hostname 或 IP:Port 形式
: proxy_set_header X-Real-IP $remote_addr;# 后端请求携带原始请求的真实 IP 地址

proxy_pass

  • 设置被代理服务器的地址和被映射的URI,地址可以使用主机名或IP加端口号的形式

1. proxy_pass路径

!!!后面的/很重要

location /html/ {
1. proxy_pass http://proxy.com;
2. proxy_pass http://proxy.com/;
}

假设访问的url是 http://domain.com/html/test.js

  • 对于1来说 proxy.com 后面没有"/",表示"/html/" 请求(包括自己)后续的路径及其参数等关键字都由http://a.com/来处理,代理后变成了http://proxy.com/html/test.js
  • 对 2来说 proxy.com 后面有"/",表示"/html/" 请求后续的路径及其参数等关键字都由 http://a.com/来处理,代理后变成了http://proxy.com/test.js

2. 具体设置

server {
listen 8000;
location / {
proxy_pass http://192.168.31.129:8001;
}
}

!!一个请求的生命周期

这个server服务监听

0.0.0.0:8000
端口监听表示本机素有ip的8000端口,如果有客户端请求到我们本机的8000端口,则开始匹配,
/
表示匹配所有的路径,对8000端口无条件转发到
http://192.168.31.129:8001;
ps:我们的django服务器需要绑定
http://192.168.31.129:8001;

!!! Nginx服务器地址需要添加到Django后台的settings允许访问的白名单中

ALLOWED_HOSTS = [
...
'192.168.31.131' #Nginx服务器地址
...
]

#!!! Nginx服务器并不在Django的CORS跨域白名单中

# 需要手动添加
CORS_ORIGIN_WHITELIST = (
...
'192.168.31.131' #Nginx服务器地址
...
)
  • 点赞
  • 收藏
  • 分享
  • 文章举报
╰☆阳光のboy 发布了36 篇原创文章 · 获赞 2 · 访问量 1591 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: