部署 --> Nginx正向代理与反向代理

  • 正向代理: 对于客户端,我的请求到达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. 对于1来说 proxy.com 后面没有"/",表示"/html/" 请求(包括自己)后续的路径及其参数等关键字都由http://a.com/来处理,代理后变成了http://proxy.com/html/test.js
  2. 对 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服务器地址
    ...
)

你可能感兴趣的:(部署 --> Nginx正向代理与反向代理)