nginx, flask, wsgi
原来自己还没搞懂这些。
首先post一个观点:
nginx应该是没解析任何东西,就判断是不是http请求,然后转发?或者判断是不是tcp请求,然后转发。
所以给了python后台就可以用wsgi解包。
浏览器发送一个HTTP请求;
服务器收到请求,生成一个HTML文档;
服务器把HTML文档作为HTTP响应的Body发送给浏览器;
浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示。
flask默认实现了多线程啊。
在api里面print("??"), time.sleep(5)就知道了,先输出两个??
那
threaded=True,
processes=5,
这两个参数是干嘛的。
对,默认多线程,threaded=False,就可以开启不是多线程
GET
浏览器直接访问:
GET / HTTP/1.1
Host: localhost:
Connection: keep-alive
Upgrade-Insecure-Requests:
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: session=eyJ1c2VyX2lkIjoxMX0.XFBI2g.Y6DEEvE55BrKN1RAi3ahzr2ACLY
curl:
('127.0.0.1', )上线
GET / HTTP/1.1
Host: localhost:
User-Agent: curl/7.47.
Accept: */*
nginx:
GET / HTTP/1.0
Host: localhost:
X-Real-IP: 192.18.0.1
X-Forwarded-For: 192.18.0.1
Connection: close
Upgrade-Insecure-Requests:
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: session=eyJ1c2VyX2lkIjoxMX0.XFBI2g.Y6DEEvE55BrKN1RAi3ahzr2ACLY
If-None-Match: W/"5c334609-97a"
If-Modified-Since: Mon, 07 Jan 2019 12:28:57 GMT
post man
GET / HTTP/1.1
Host: localhost:
Connection: keep-alive
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Postman-Token: 30cd6141-94c1-72f4-867b-6812798e630d
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
curl post
('192.18.0.1', )上线
POST / HTTP/1.1
Host: localhost:
User-Agent: curl/7.47.
Accept: */*
Content-Length: 144
Expect: 100-continue
Content-Type: multipart/form-data; boundary=------------------------a2d7d2c79637d3d8
--------------------------a2d7d2c79637d3d8
Content-Disposition: form-data; name="weiming"
aa
--------------------------a2d7d2c79637d3d8--
postman post
('192.18.0.1', )上线
POST / HTTP/1.1
Host: localhost:
Connection: keep-alive
Content-Length:
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Cache-Control: no-cache
Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop
Postman-Token: 70ba296b-ceaa-10be-0fa0-99f50f7b92c3
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryxQsGCT1GJEFAARPd
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
------WebKitFormBoundaryxQsGCT1GJEFAARPd
Content-Disposition: form-data; name="weiming"
liu
------WebKitFormBoundaryxQsGCT1GJEFAARPd--
postman post nginx
('192.18.0.6', )上线
POST / HTTP/1.0
Host: localhost:
X-Real-IP: 192.18.0.1
X-Forwarded-For: 192.18.0.1
Connection: close
Content-Length:
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Cache-Control: no-cache
Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop
Postman-Token: 63158aa1-955c-b6bf-0a25-3ddcf7db86df
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryNM8OhUBY87wBspdZ
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
------WebKitFormBoundaryNM8OhUBY87wBspdZ
Content-Disposition: form-data; name="weiming"
liu
------WebKitFormBoundaryNM8OhUBY87wBspdZ
Content-Disposition: form-data; name="aaa"
bbb
------WebKitFormBoundaryNM8OhUBY87wBspdZ--
nginx, flask, wsgi的更多相关文章
- nginx,wsgi,flask之间的关系
之前看写flask 应用的一些疑问,百度上的答案解释的不错,这里记着以后可以看看Web 服务器层对于传统的客户端 - 服务器架构,客户端向服务器发送请求,服务器接收请求,处理请求,最后给客户端返回请求 ...
- Flask + WSGI + Nginx 云部署
这几天学着用flask写一些rest api,然后部署到云上.这个过程虽然网上有很多的教程,但还是遇到不少的问题! 采用flask的原因是因为它比较容易上手吧.用flask有专门restful api ...
- 阿里云部署 Flask + WSGI + Nginx 详解
抵不住朋友的诱惑,今天终于入手了一台阿里云服务器,是Ubuntu 1.4 32位版本,最初考虑是用来尝尝鲜只是买了个最低配的,价格算起来与在国外买个空间的价格相当吧(可能一年才贵100多),但用起来感 ...
- 阿里云部署 Flask + WSGI + Nginx 转载详解
我采用的部署方案是: Web 服务器采用 uwsgi host Flask 用 Supervisor 引用 uwsgi 作常规启动服务 基于 Nginx 作反向代理 首先, 阿里云服务器可以通过 SS ...
- virtualenv 环境下 Nginx + Flask + Gunicorn+ Supervisor 搭建 Python Web
在这篇文章里,我们将搭建一个简单的 Web 应用,在虚拟环境中基于 Flask 框架,用 Gunicorn 做 wsgi 容器,用 Supervisor 管理进程,然后使用 Python 探针来监测应 ...
- Nginx、WSGI、 uWSGI、 uwsgi的区别
当我们部署完一个应用程序,浏览网页时具体的过程是怎样的呢?首先我们得有一个 Web 服务器来处理 HTTP 协议的内容,Web 服务器获得客户端的请求,交给应用程序,应用程序处理完,返回给 Web 服 ...
- python nginx+uwsgi+WSGI 处理请求详解
https://blog.csdn.net/a519640026/article/details/76157976 请求从 Nginx 到 uwsgi 到 django 交互概览 作为python w ...
- nginx+flask+gevent+uwsgi实现websocket
Websocket简介 WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议.在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务 ...
- web 部署专题(七):Ubuntu + Nginx + Flask + Gunicore环境搭建(服务器)
现在我们手里有一个准备发布的项目,那么如何将他上传到你的服务器,并让外网访问呢? 安装: 安装Flask pip3 install flask 安装UWSGI pip3 install uwsgi 安 ...
随机推荐
- google/protobuf hello world
/(ㄒoㄒ)/~~ 官网被墙 1. github > Search > protobuf or protocol buffers 2.https://github.com/google/p ...
- 将std::string当字节流使
string是C++标准定义的字符串类,它不但支持文本,而且支持二进制字节流.给一个string变量赋值有多种方法: 1) 拷贝构造函数 2) 等号赋值函数 3) append成员函数 4) push ...
- Cocos2d-x-2.2.2开发环境配置
1.安装各种软件: Android SDK Android NDK Apache Ant Python Eclipse(adt) Cygwin(可选) Java Cocos2d-x 2.系统环境变量配 ...
- log4net 入门使用
log4net 是dotnet平台下的一个日记记录组件. 一 NuGet中安装log4net包: 二 配置log4net.config文件 配置文件内容: <?xml version=&quo ...
- php二维数组去除重复值
<?php //二维数组 $test["aa"] = array("id"=>"17","name"=> ...
- AI_图像识别
http://ai.baidu.com/forum/topic/show/595938 经测试识别率相当高,车辆信息识别 文中的import cv2不是python3自带库,需要安装pip3 inst ...
- C#多线程学习(二) 如何操纵一个线程
在C#中,线程入口是通过ThreadStart代理(delegate)来提供的,你可以把ThreadStart理解为一个函数指针,指向线程要执行的函数,当调用Thread.Start()方法后,线程就 ...
- 知物由学 | 如何利用人工智能来对抗DDoS攻击?
欢迎访问网易云社区,了解更多网易技术产品运营经验. "知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理 ...
- C++中引用的形参使用
引用解释: (1)引用仅是变量的别名,而不是实实在在地定义了一个变量,因此引用本身并不占用内存,而是和目标变量共同指向目标变量的内存地址,即共用内存 (2)引用和目标变量的地址是一样的,对引用的操作与 ...
- C语言 算平均数
int main() { int number ; int sum = 0; int count = 0; do { scanf("%d", &number ); if( ...