什么是 Nginx

Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强。

Nginx 是俄罗斯人编写的十分轻量级的 HTTP 服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器。Nginx 是由俄罗斯人 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor Sysoev 在建立的项目时,使用基于 BSD 许可。

Nginx 特点

Nginx 做为 HTTP 服务器,有以下几项基本特性:

  • 处理静态文件,索引文件以及自动索引;打开文件描述符缓冲.
  • 无缓存的反向代理加速,简单的负载均衡和容错.
  • FastCGI,简单的负载均衡和容错.
  • 模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCGI 或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。
  • 支持 SSL 和 TLSSNI.

Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 。它支持内核 Poll 模型,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。
Nginx 具有很高的稳定性。其它 HTTP 服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前 apache 一旦上到 200 个以上进程,web响应速度就明显非常缓慢了。而 Nginx 采取了分阶段资源分配技术,使得它的 CPU 与内存占用率非常低。Nginx 官方表示保持 10,000 个没有活动的连接,它只占 2.5M 内存,所以类似 DOS 这样的攻击对 Nginx 来说基本上是毫无用处的。就稳定性而言,Nginx 比 lighthttpd 更胜一筹。
Nginx 支持热部署。它的启动特别容易, 并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行升级。
Nginx 采用 master-slave 模型,能够充分利用 SMP 的优势,且能够减少工作进程在磁盘 I/O 的阻塞延迟。当采用 select()/poll() 调用时,还可以限制每个进程的连接数。
Nginx 代码质量非常高,代码很规范,手法成熟,模块扩展也很容易。特别值得一提的是强大的 Upstream 与 Filter 链。Upstream 为诸如 reverse proxy,与其他服务器通信模块的编写奠定了很好的基础。而 Filter 链最酷的部分就是各个 filter 不必等待前一个 filter 执行完毕。它可以把前一个 filter 的输出做为当前 filter 的输入,这有点像 Unix 的管线。这意味着,一个模块可以开始压缩从后端服务器发送过来的请求,且可以在模块接收完后端服务器的整个请求之前把压缩流转向客户端。
Nginx 采用了一些 os 提供的最新特性如对 sendfile (Linux2.2+),accept-filter (FreeBSD4.1+),TCP_DEFER_ACCEPT (Linux 2.4+)的支持,从而大大提高了性能。

https://www.cnblogs.com/qdhxhz/p/8910174.html

nginx 安装

1、安装gcc
安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:

  1. yum install gcc-c++

2、PCRE pcre-devel 安装
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:

  1. yum install -y pcre pcre-devel

3、zlib 安装
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。

  1. yum install -y zlib zlib-devel

4、OpenSSL 安装
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。

  1. yum install -y openssl openssl-devel

下载安装包
手动下载.tar.gz安装包,地址:https://nginx.org/en/download.html

如果是学习就随便安装版本、如果是用来部署网站建议安装稳定版本
image.png

下载好后进行上传至你的服务器 /home目录下
image.png

解压并配置

  1. tar -zxvf nginx-1.20.1.tar.gz

image.png
进入nginx-1.20.1、这里你可以进行修改它的目录名称、我这里已经有个nginx目录了就不再去修改了、进入后进行编译

  1. ./configure
  2. make
  3. make install

image.png
使用./configure 后
image.png

继续使用make命令
image.png
进行编译安装

  1. make install

查看nginx版本
由于我的是在home目录下不能直接进行敲nginx、需要安装以下命令进行

  1. cd /usr/local/nginx/sbin

image.png
查看版本

  1. ./nginx -v

image.png

启动nginx

  1. ./nginx

没任何提示证明启动成功
浏览器输入 http://ip:端口 、nginx默认端口是80如果80端口被占用则无法启动成功nginx、这里我机器上的80端口已经被其他web应用占领了、我修改了端口号为1000了、所以我的路径地址是下面这个:

  1. http://120.77.152.21:1000/

修该端口号
nginx的配置文件路径在 nginx/conf目录下的nginx.conf 整体的路径是这样的:

  1. /usr/local/nginx/conf/nginx.conf

vim编辑nginx.conf

  1. vim /usr/local/nginx/conf/nginx.conf

image.png
我们找到http对象下的server节点、该节点是配置服务的、http下可配置多个server节点、相当于多个web应用。
我们修改listen参数的值:

  1. server {
  2. listen 1000;//修改这个就是nginx服务的端口
  3. server_name localhost; //服务域名、需要域名解析的域名

image.png

修改后记得:wq保存

server节点下的location就是web应用主要配置内容

  1. location / {
  2. root html; // web目录的入口目录
  3. index index.html index.htm; // 默认访问的web主页面
  4. }

nginx的基本命令
启动nginx服务

  1. ./nginx

停止nginx服务

  1. ./nginx -s stop

也是没有任何提示的

安全退出nginx服务

  1. ./nginx -s quit

重新加载配置文件
nginx在启动状态时修改了配置文件使用这个进行热更新即可

  1. ./nginx -s reload

查看nginx进程

  1. ps aux|grep nginx

image.png
https://www.cnblogs.com/shouyaya/p/14810527.html