1、什么是Nginx ?

  Nginx(发音为“ engine x”)是由俄罗斯软件工程师Igor Sysoev编写的免费开源Web服务器。是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。

  那么Nginx可以做些什么呢?

  • Nginx可以作为静态资源服务器,用于部署静态资源,如作为WEB服务器
  • Nginx可以作为反向代理服务器,进行服务端的负载、转发等操作
  • Nginx可以提供API服务器,如OpenResty

  

  关于反向代理,首先我们要与正向代理相区分,简单来说,正/反向代理是与代理属于客户端还是服务端有关,如代理服务器与客户端绑定则为正向代理,代理服务器与服务端绑定则为反向代理服务器,如下图所示:

   

  关于API服务器,nginx采用模块化设计,一些第三方模块可以直接读写数据库,所以nginx可以通过安装第三方模块来操作数据库,有lua模块提供这样的操作。

  OpenResty是一个基于 NGINX 的可伸缩的 Web 平台,提供了很多高质量的第三方模块。OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,在性能方面,OpenResty可以快速构造出足以胜任 10K 以上并发连接响应的超高性能 Web 应用系统。

2、为什么要采用Nginx?

  Nginx具备以下特点:

  • Nginx: 开源,高并发,高性能,可扩展性好,高可靠性,热部署
  • Apache低效: 一个连接一个进程

  如果是使用Apache作为Web服务器软件,由于Apache一个进程就是创建一个对应的连接。假设您有1,000个同时连接的客户端,他们请求了类似的内容。如果每个客户端仅分配1 MB的额外内存,则将导致1000 MB(约1 GB)的额外内存专用于仅为1000个客户端提供100 KB的内容。事实上,典型的基于Apache的Web服务器通常为每个连接分配超过1 MB的额外内存,对于持久连接,处理并发性的问题更加明显,因为要避免与建立新的HTTP连接相关的延迟,客户端将保持连接状态,并且对于每个连接的客户端,Web服务器都会分配一定数量的内存。如下所示Nginx市场趋势如下:

  

 3、Linux下Nginx的安装部署(基于源码构建,可以自定义模块)

  1、安装前准备

  检查linux版本,需要linux内核2.6及以上(支持epoll)。

uname ‐a

  

  2、安装依赖库

  Nginx中的功能是模块化的,而模块有依赖于一些软件包(如pcre库、zlib库、openssl库),因此需 要先安装依赖库。

  • GCC编译器: 编译C语言程序;
  • PCRE库: 支持正则表达式;
  • zlib库: 对http包内容进行gzip格式压缩;
  • OpenSSL开发库:支持更安全的SSL协议,加密算法。
yum ‐y install make zlib‐devel gcc‐c++ libtool openssl‐devel pcre‐devel

  3、下载源码

  下载nginx的官网下载地址: http://nginx.org/en/download.html

#下载源码
wget http://nginx.org/download/nginx‐1.14.2.tar.gz 
#解压
tar ‐zxvf nginx‐1.14.0.tar.gz

  源码目录如下所示:

  

   目录说明如下所示:

   

  4、源码构建

  基于nginx源码构建文档: http://nginx.org/en/docs/configure.html

# 默认构建
./configure
# 基于参数构建
#‐‐prefix 设置Nginx的安装目录 
#‐‐with‐http_ssl_module 设置在Nginx中允许使用 http_ssl_module模块的相关功能
./configure ‐‐prefix=/usr/local/nginx ‐‐with‐http_stub_status_module ‐‐with‐ http_ssl_module ‐‐with‐debug

  如下示例所示,配置了一些path信息等,但是记得必须写成一行(如上面示例所示):

./configure
    --sbin-path=/usr/local/nginx/nginx
    --conf-path=/usr/local/nginx/nginx.conf
    --pid-path=/usr/local/nginx/nginx.pid
    --with-http_ssl_module
    --with-pcre=../pcre-8.44
    --with-zlib=../zlib-1.2.11

  5、编译安装

make && make install

  6、启动Nginx

# 进入安装目录 /usr/local/nginx,启动Nginx
./sbin/nginx
# 帮助文档 .
/sbin/nginx ‐h
# 快速停止,不会管正在处理的请求 .
/sbin/nginx ‐s stop # 优雅退出,会等待请求结束之后再关闭,可以设置超时时间,超时时间还没处理完也会直接关闭 ./sbin/nginx ‐s quit # 热装载配置文件 对应命令 kill -HUP master进程号 ./sbin/nginx ‐s reload # 重新打开日志文件 ./sbin/nginx ‐s reopen

  如下图所示:

   

  默认端口80,启动后浏览器访问http://localhost,如本人修改监听端口为8080,访问界面为:

   

 4、Mac下的Nginx安装与部署

  1、安装

brew install nginx

  2、查看Nginx版本及安装详情

  可以通过命令查看Nginx版本安装情况:

# 查看Nginx版本
nginx -v
# 查看Nginx版本及安装路径
nginx -V

  如下图所示:

  

  3、启动

brew services start nginx

  打开http://localhost:8080,看到这个页面说明启动成功:

  

  4、命令解释

# 停止
brew services stop nginx

# 重启(会先stop,再start)
brew services restart nginx

# 重新加载配置(不会stop,只是重新加载配置)
nginx -s reload

# 验证nginx配置文件是否正确
nginx -t

#Nginx默认配置文件位置
/usr/local/etc/nginx/nginx.conf

 

posted on 2021-03-25 03:49  kosamino  阅读(322)  评论(0编辑  收藏  举报