基本原理
- 首先用户浏览器向nginx发送请求,nginx判断是动态请求还是静态请求,如果是静态请求,则直接返回静态文件。如果是动态请求,则将请求转发给uwsgi服务器,uwsgi调用我们的django进行处理请求,然后一步一步的再返回。
- WSGI是Web 服务器(uWSGI)与 Web 应用程序或应用框架(Django)之间的一种低级别的接口
- uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议
- uwsgi是Nginx服务器和uWSGI服务器的通信协议,规定了怎么把请求转发给应用程序和返回
Nginx的反向代理原理
正向代理:
如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理,下面是正向代理的原理图。
由于工作环境原因,日常工作只能局限于单位的局域网,如果想要访问互联网,怎么办呢?这就需要用到正向代理。
反向代理:
隐藏了真实服务器 IP
地址。
正向代理和反向代理的区别,一句话就是:如果我们客户端自己用,就是正向代理。如果是在服务器用,用户无感知,就是反向代理。
反向代理实例
实现效果:
使用 Nginx
反向代理,访问192.168.17.129直接跳转到127.0.0.1:8080
注意:此处如果要想从192.168.17.129跳转到本机指定的ip
,需要修改本机的hosts
文件。此处略过
配置代码
server {
listen 80;
server_name 192.168.17.129;
location / {
root html;
index index.html index.htm;
proxy_pass http://127.0.0.1:8080
}
}
如上配置,Nginx
监听 80
端口,访问ip192.168.17.129(不加端口号时默认为 80
端口),故访问该域名时会跳转到 127.0.0.1:8080
路径上。这里的127.0.0.1:8080就可以理解为uWsgi服务器配置文件uwsgi.ini设置的ip和端口
此处的意思为:nginx 反向代理服务监听 192.168.17.129的80端口,如果有请求过来,则转到proxy_pass配置的对应服务器上,仅此而已。
在location下,同时配置root和proxy_pass选项时,两个选项只会二选一执行
此处不能配置https反向代理