编程技术分享平台

网站首页 > 技术教程 正文

深入理解Nginx一之Nginx入门(nginx详细教程)

xnh888 2024-09-09 09:51:41 技术教程 26 ℃ 0 评论

什么是Nginx

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 ,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。

其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2022年01月25日,nginx 1.21.6发布。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

Nginx优点

为什么选择Nginx?因为它具有以下特点:

更快

这表现在两个方面:一方面,在正常情况下,单次请求会得到更快的响应;另一方面,在高峰期,如有数以万计的并发请求,Nginx 可以比其他服务器更快地响应请求。

扩展性

Nginx的设计极具扩展性,它完全是由多个不同功能、不同层次、不同类型且耦合度极低的模块组成。因此,当对某一个模块修复Bug或进行升级时,可以专注于模块自身,无须在意其他。而且在HTTP模块中,还设计了HTTP过滤器模块:一个正常的HTTP模块在处理完请求后,会有一串HTTP过滤器模块对请求的结果进行在处理。这样,当我们开发一个新的HTTP模块时,不但可以使用诸如HTTP核心模块、events模块、log模块等不同层次或者不同类型的模块,还可以原封不动地复用大量已有的HTTP过滤器模块。这种低耦合度的优秀设计,造就了Nginx庞大的第三方模块,当然,公开的第三方模块也如官方发布的模块一样容易使用。

高可靠性

高可靠性是我们选择Nginx的最基本条件,因为Nginx的可靠性是大家有目共睹的,很多家高流量网站都在核心服务上大规模使用Nginx。Nginx的高可靠性来自于其核心框架代码的优秀设计、模块设计的简单性;另外,官网提供的常用模块都非常稳定,每个worker进程相对独立,master进程在1个worker进程出错时可以快速“拉起”新的worker子进程提供服务。

单机支持10万以上的并发连接

这是一个非常重要的特性!随着互联网的迅猛发展和互联网用户数量的成倍增长,各大公司,网站都需要应付海量并发请求,一个能够在峰值期顶住10万以上并发请求的Server,无疑会得到大家的青睐。理论上,Nginx支持的并发连接上限取决于内存,10万远未封顶。当然,能够及时地处理更多的并发请求,是与业务特点紧密相关的。

Nginx安装

下载

Nginx官网地址:nginx news 。下载nginx-1.25.4.tar,如图:

编译安装Nginx

安装Nginx 最简单的方式是,进入nginx-1.25.4 目录后执行以下 3 行命令:

./configure
make
make install
a123456@luludeMacBook-Pro-2 Downloads % cd nginx-1.25.4
a123456@luludeMacBook-Pro-2 nginx-1.25.4 % ls
CHANGES		LICENSE		auto		configure	html		src
CHANGES.ru	README		conf		contrib		man
a123456@luludeMacBook-Pro-2 nginx-1.25.4 % ./configure  --without-http_rewrite_module
checking for OS
 + Darwin 20.6.0 x86_64
checking for C compiler ... found
 + using Clang C compiler
 + clang version: 12.0.5 (clang-1205.0.22.11)
checking for -Wl,-E switch ... not found
checking for gcc builtin atomic operations ... found
checking for C99 variadic macros ... found
checking for gcc variadic macros ... found
checking for gcc builtin 64 bit byteswap ... found
checking for unistd.h ... found
checking for inttypes.h ... found
。。。。。。。。。。。。
  creating objs/Makefile

Configuration summary
  + PCRE library is not used
  + OpenSSL library is not used
  + using system zlib library

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"
  
  
a123456@luludeMacBook-Pro-2 nginx-1.25.4 % make
/Library/Developer/CommandLineTools/usr/bin/make -f objs/Makefile
cc -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \
  
  a123456@luludeMacBook-Pro-2 nginx-1.25.4 % sudo make install
Password:
/Library/Developer/CommandLineTools/usr/bin/make -f objs/Makefile install
test -d '/usr/local/nginx' || mkdir -p '/usr/local/nginx'
test -d '/usr/local/nginx/sbin' \
		|| mkdir -p '/usr/local/nginx/sbin'
test ! -f '/usr/local/nginx/sbin/nginx' \
		|| mv '/usr/local/nginx/sbin/nginx' \
			'/usr/local/nginx/sbin/nginx.old'

pwd 命令

a123456@luludeMacBook-Pro-2 nginx % pwd
/usr/local/nginx

启动Nginx

a123456@luludeMacBook-Pro-2 sbin % ./nginx

使用浏览器访问地址:http://127.0.0.1/

好了,Nginx 就成功启动了!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表