nginx 初识
目前常用的 web 网络服务器程序有 IIS、Apache、nginx 等。其中,IIS(Internet Information Services,互联网信息服务)是 Windows 默认的 web 服务器程序。
2004 年 10 月 4 日,为俄罗斯知名门户站点而开发的 web 服务程序 nginx 横空出世。 nginx 程序作为一款轻量级的网站服务软件,因其稳定性和丰富的功能而快速占领服务器市场。
nginx 是 Linux 的一个软件,性能十分强大
是一个高性能的 web 服务器软件
能够实现 web 服务器功能,展示静态页面
实现反向代理,用作项目部署,负载均衡,邮件代理等等
小型网站的部署
小型网站一般部署在一台服务器上,不必要过多考虑负载均衡和特别高的并发的情况。即便如此,为了确保网站的正常运行,并且避免恶意攻击,提高运行效率,还是要有一套科学的部署流程。
用户的请求,首先通过浏览器发送给 nginx 这个 web 服务器。nginx 先对这些请求进行简单处理。如果发现请求的是静态文件,就直接返回给浏览器,不进入后端逻辑。nginx 处理静态文件的性能非常高。如果是需要访问数据库等动态请求,就转发给后端的 web 框架处理。
后端的 web 框架使用的是 uwsgi + django 模式实现较高并发。后端运行着多个 uwsgi + django 进程。这样可以更高效地处理并发任务。而且即便有一两个进程崩溃,也不会造成网站的瘫痪。既提高了进程,又提高了稳定性。
这样一来,动静态请求分离,极大减少后端服务器的压力。
小型网站部署可以参考如下图示。
为何要用 nginx?
我们知道,公网是很危险的地方,充斥着各种恶意流量和恶意攻击。所以真实的生产环境中,通常会在 web 服务器例如 nginx 和后端的 web 框架例如 django 之间加一道防火墙。nginx 部署在内网和公网,可以随意访问。但是 django 和数据库部署在内网,只能本地访问。这样,外部请求必须经过 nginx 才能访问到我们的 django 项目,极大提高了安全性。
nginx 和 Tengine
Tengine 是由淘宝网发起的 web 服务器项目。它在 Nginx 的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine 的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的 web 平台。
简而言之,Tengine 就是针对高并发进行了优化的 nginx。Tengine 的安装和使用与 nginx 基本一致,可以按照需求,自主选取。
nginx 常用功能
- nginx 的虚拟主机功能
- nginx 支持多虚拟主机
- nginx 的访客日志功能,检测用户的请求来源 IP,请求客户端
- 检测用户来源客户端,返回移动端/PC 端的站点
- 运维通过日志分析用户的请求情况,时间点等等
- 检测恶意的爬虫客户端,进行封禁等
- nginx 的错误页面优化等
- nginx 的反向代理功能,请求转发
- 实现负载均衡,请求分发
nginx 的文件夹介绍
通过源代码编译安装的 tengine,可以这样查看目录结构:
1 | [root@s26linux tengine23]# pwd |
- conf,存放 nginx 配置文件的目录
- html,存放 nginx 的网站站点 静态资源的目录
- logs,存放各种日志的目录
- sbin,存放 nginx 可执行脚本的目录
通过 yum 安装的 nginx,其配置文件所在位置为:
1 | [root@localhost bin]# cat /etc/nginx/nginx.conf |
在配置文件里面,可以找到日志文件等所在的位置,也可对其进行配置。
nginx 的常用参数
1 | nginx -s reload # 平滑重启,重新读取nginx配置文件,而不重启进程 |