飞污熊博客

静下心来做一件事

web开发的过程中一定会遇到 cgi、wsgi 之类的名词,然后看着他们十分相似的解释估计还没开始写代码就晕了,这都什么鬼? 今天我就聊聊这些容易搞混的名称。

CGI(Common Gateway Inteface)

字面意思就是通用网关接口,它是外部应用程序与Web服务器之间的接口标准,规定一个程序该如何与web服务器程序之间通信。 当然,CGI 只是一个很基本的协议,在现代常见的服务器结构中基本已经没有了它的身影,更多的则是它的扩展和更新。

阅读全文 »

TLS(transport layer security), 和它的后继者SSL是一个安全套接字层协议,是为了给普通的网络传输内容加密传输而来。

网站转成https是大势所趋。但是在国内,推进的过程显然要比国外慢很多。

现阶段如果将自己的网站改成https以后,会碰到这样的尴尬现象:如果在页面上引用了http://的链接或者图片, 用户在浏览器上会看到类似该网站是非安全网站的警告,对于网站运营者来说可以说非常冤。由于很多链接是第三方的,没有办法去控制。 对于api接口类的网站,就不存在混合的问题,所以首先应该从api后台接口部分开始用https。(ios已经强制要求接口地址必须为https了)

本章专门来讲解在nginx中如何配置https访问。

首先要明确的是要支持https就必须要有证书,这个证书可以是自己生成的,也可以从CA机构申请,在测试阶段可以自己生成, 但是如果要部署到生产环境,最好去CA机构申请,有免费和收费的证书,同时还分不同的证书种类。

阅读全文 »

本篇介绍nginx的一些进阶使用方法,包括反向代理、虚拟主机、负载均衡、页面缓存等等。

反向代理(Reverse Proxy)方式是指用代理服务器来接受网络上的连接请求,然后将请求转发给内部网络上的服务器, 并将从服务器上得到的结果返回给请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

举个例子,一个用户访问 http://www.xiongneng.cc/readme,但是www.xiongneng.cc上并不存在readme页面, 它是从另外一台服务器上取回来,然后作为自己的内容返回给用户。但是用户并不知情这个过程。对用户来说, 就像是直接从www.xiongneng.cc获取readme页面一样。 这里www.xiongneng.cc这个域名对应的服务器就设置了反向代理功能。

阅读全文 »

nginx是一个优秀的 HTTP 和反向代理服务器,一个邮件代理服务器, 一个通用TCP/UDP代理服务器,官网地址:https://nginx.org/en/

nginx由于出色的性能,在世界范围内受到了越来越多人的关注。其特点是占有内存少,并发能力强, 事实上nginx的并发能力确实在同类型的网页伺服器中表现较好。 目前中国大陆使用nginx网站用户有新浪、网易、腾讯,另外知名的微网志Plurk也使用nginx

之前写过一篇关于nginx的入门篇,nginx作为一款受欢迎的高性能 Web 服务器, 有必要重新捣鼓一下,这次选择centos7演示。

阅读全文 »

wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。 使用wireshark的人必须了解网络协议,否则就看不懂wireshark了。 为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。

wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容。 如果是处理HTTP,HTTPS 还是用Fiddler, 其他协议比如TCP,UDP就用wireshark。

阅读全文 »

Werkzeug是一个专门用来处理HTTP和WSGI的工具库,可以方便的在Python程序中处理HTTP协议相关内容。

这里稍微说一下,werkzeug不是一个web服务器,也不是一个web框架,而是一个工具包, 官方的介绍说是一个WSGI工具包,它可以作为一个Web框架的底层库, 因为它封装好了很多Web框架的东西,例如 Request,Response 等等。

例如我最常用的Flask框架就是以Werkzeug为基础开发的,这也是我要专门探究Werkzeug底层的原因, 因为我想知道Flask的实现逻辑以及底层控制。这篇文章没有涉及到Flask的相关内容, 只是以Werkzeug创建一个简单的Web应用,然后以这个Web应用为例剖析请求的处理以及响应的产生过程。

官网教程给了个例子,创建一个类似TinyURL的WEB应用,我就用官网这个例子来说明。

另外我还提一下python里面另一个函数库就是Requests,这是一个HTTP客户端库。 跟Werkzeug没有可比性,一个客户端库,一个服务器端库。

阅读全文 »

作为一个码农对于那些优秀的开发工具爱不释手,它们对框架的支持、界面、插件都是那么的优秀, 大大加快了开发的速度以及开发的乐趣,酷炫的界面也能大大的装一个逼。写到这里大家应该能猜到我说的是啥了, 没错,就是JetBrains出品的全系列IDE开发工具,比如IntelliJ IDEA、PyCharm等等。

对于暂时经济不宽裕的同学,比较明智的选择是Google一台active服务器即可, 有能力的同学不妨尝试自行架设,这也就是本文的目的啦。

喝水不忘挖井人,在此向服务器软件的作者Lanyu表示衷心的感谢。

阅读全文 »

Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具, 可以很方便的用来启动、重启、关闭进程(不仅仅是Python进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程, 有时候服务器出问题导致所有应用程序都被杀死,此时可以用supervisor同时启动所有应用程序。

阅读全文 »

awk是一种样式扫描与处理工具。但其功能却大大强于sed和grep。awk提供了极其强大的功能,它几乎可以完成grep和sed所能完成的全部工作, 同时,它还可以可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。 它具备了一个完整的语言所应具有的几乎所有精美特性。实际上,awk的确拥有自己的语言:样式扫描和处理语言。 它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

阅读全文 »