Nginx

Nginx是一款轻量级、高性能的HTTP和反向代理服务器,以其高并发处理能力、低内存占用和丰富的功能而备受青睐。在全球最繁忙的网站中,Nginx使用率高达42.7%,超越Apache成为首选。Nginx的优势包括支持热部署、负载均衡和强大的代理功能,适合处理静态文件和高并发场景。与Apache相比,Nginx在动态请求处理上稍逊,但在轻量级和性能上占优。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在 BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 Nginx 网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

以上内容摘选自 百度百科 - nginx 词条

下面让我们一同学习 Nginx 的知识。

Nginx 是什么

Nginx 读音'Engine X', 很多工程师也喜欢读成'恩基克思'。

Nginx 是一款高性能的 HTTP 和反向代理服务器软件,第一个开源版本诞生于 2004 年,虽然诞生较晚但经过十多年的发展,已经成为非常流行的 Web 服务器软件,下图是 w3techs 公布的全球网站服务器软件统计报告:

img

截止到 2014 年 12 月 31 日,Nginx 仅次于 Apache 成为第二大 Web 服务器软件,而在全球最忙碌 top10000 网站中使用比例更是高达 42.7%。其发展速度和流行程度已经远远超过其它同类软件,成为大型网站和高并发网站的首选。

下面列出一些使用 Nginx 的网站: 

whousenginx

Nginx 为什么流行

市场往往会选择简单实用的技术,Nginx 之所以能够脱颖而出,可以说是 Nginx 的特性迎合了市场的发展趋势。

近几年来,随着硬件成本的降低,个人电脑和移动设备得到了普及,Web 服务器在互联网中的角色与十几年前的相比已大不相同。高并发已经成为趋势,而高并发又要求架构具有健壮性和可伸缩性。

这些正是 Nginx 的特性,它是为性能而生,从发布以来一直侧重于高性能、高并发、低 CPU 内存消耗;在功能方面:负载均衡、反向代理、访问控制、热部署、高扩展性等特性又十分适合现代的网络架构。更可贵的是配置简单文档丰富,大大降低了学习的门槛。像这样稳定性能强、功能丰富又简单的产品当然会受欢迎了。

为什么选择 Nginx

Apache 自 1990 年发布以来,一直是 web 服务器市场的王者。Nginx 出现较晚,因其在高并发下卓越的表现,最初是作为 Apache 在高并发情况下的补充(当时 Nginx+Apache 是流行的架构)。

现在 Nginx 的功能已经十分完善,多数场合下不需要 Nginx+Apache 这样复杂的架构,那么问题来了,选择 Nginx 还是 Apache?

Nginx 和 Apache 相同点

  • 同是 HTTP 服务器软件,都采用模块化结构设计
  • 支持通用语言接口,如 PHP、Python 等
  • 支持正向代理和反向代理
  • 支持虚拟主机及 SSL 加密传输
  • 支持缓存及压缩传输
  • 支持 URL 重写
  • 模块多,扩展性强
  • 多平台支持

Nginx 的优势

  • 轻量级:安装文件小,运行时 CPU 内存使用率低;
  • 性能强:支持多核,处理静态文件效率高,内核采用的 poll 模型最大可以支持 50K 并发连接;
  • 支持热部署,同时启动速度快,可以在不间断服务的情况下对软件和配置进行升级;
  • 负载均衡,支持容错和健康检查;
  • 代理功能强大,支持无缓存的反向代理,同时支持 IMAP/POP3/SMTP 的代理。

Nginx 的劣势

  • 相比 Apache 模块要少一些,常用模块都有,支持 LUA 语言扩展功能;
  • 对动态请求支持不如 Apache;
  • Windows 版本功能有限,受限于 Windows 的特性,支持最好的还是 Unix/Linux 系统。

Nginx 工作原理

Nginx 由内核和一系列模块组成:内核提供 web 服务的基本功能,如启用网络协议、创建运行环境、接收和分配客户端请求、处理模块之间的交互。模块实现 Nginx 的各种功能和操作,Nginx 的模块从结构上分为核心模块、基础模块和第三方模块。

  • 核心模块: HTTP 模块、EVENT 模块和 MAIL 模块
  • 基础模块: HTTP Access 模块、HTTP FastCGI 模块、HTTP Proxy 模块和 HTTP Rewrite 模块
  • 第三方模块: HTTP Upstream Request Hash 模块、Notice 模块和 HTTP Access Key 模块及用户自己开发的模块

这样的设计使 Nginx 方便开发和扩展,也正因此才使得 Nginx 功能如此强大。Nginx 的模块默认编译进 Nginx 中,如果需要增加或删除模块,需要重新编译 Nginx,这一点不如 Apache 的动态加载模块方便。如果有需要动态加载模块,可以使用由淘宝网发起的 Web 服务器 Tengine,在 Nginx 的基础上增加了很多高级特性,完全兼容 Nginx,已被国内很多网站采用。

LNMP 系统安装(L-N-M-P)

前期准备(环境要求,库依赖)

如果你的物理机上用 apt-get 安装了老版的 Nginx,或者你的 Nginx 有问题,可以使用 sudo apt-get purge nginx 命令删除已安装的 Nginx。

针对后面的 nginx 源码编译安装(如果选择 apt-get 的方式则不需要,我们在这里会有简单的库依赖列表,需要读者参照解决。

ssl 功能需要 openssl 库

gzip 模块需要 zlib 库

rewrite 模块需要 pcre 库

这些库可以点击后在相应官网进行下载、解压、编译、安装。(下载最新的最好)

Mysql

sudo apt-get install mysql-server mysql-client

然后你会看见输入密码的界面,你只需接下来输入管理员密码就行。

如果不安装,直接使用环境中的 MySQL,只需要在环境中使用 sudo service mysql start 启动 MySQL,环境里的 MySQL 用户为 root,密码为空。

修改 MySQL 的配置文件

sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf

将 bind-address = 127.0.0.1 注释掉(在对应的行前面添加 # ),就可以远程连接数据库了

图片描述

Php安装 

sudo apt-get install mysql-server mysql-client

然后你会看见输入密码的界面,你只需接下来输入管理员密码就行。

如果不安装,直接使用环境中的 MySQL,只需要在环境中使用 sudo service mysql start 启动 MySQL,环境里的 MySQL 用户为 root,密码为空。

修改 MySQL 的配置文件

sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf

将 bind-address = 127.0.0.1 注释掉(在对应的行前面添加 # ),就可以远程连接数据库了

图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值