【分布式】部署Nginx服务及介绍--LNMP构建(超详细)

目录

Nginx服务

Nginx的基本概念

Nginx的主要用途

Nginx的特点

Nginx服务架构

部署Nginx服务

基础环境部署

(1)修改主机名

(2)关闭防火墙及SElinux服务

(3)安装配置基础服务

(4)安装配置nginx服务


Nginx服务

Nginx的基本概念

NGINX是一款高性能的开源反向代理服务器、负载均衡器和Web服务器

  1. 反向代理:NGINX可以作为反向代理服务器,将客户端请求转发给后端的多个服务器,并将响应返回给客户端。这样可以实现负载均衡、缓存、SSL终止等功能。
  2. 负载均衡:NGINX的负载均衡功能可以将请求均匀地分发给多个后端服务器,提高系统的性能和可用性。
  3. 静态文件服务:NGINX可以作为静态文件服务器,直接响应客户端对静态文件(如图片、CSS、JavaScript文件)的请求,提供高效的静态文件传输。
  4. SSL/TLS终止:NGINX可以用作SSL/TLS终止,对收到的加密请求进行解密,并将明文请求发送给后端服务器。
  5. 缓存:NGINX的缓存功能可以在代理服务器上缓存来自后端服务器的响应,减轻后端服务器的负载,并提供更快的响应时间。
  6. 动态HTTP内容处理:除了静态内容,NGINX还可以处理动态的HTTP内容,如使用FastCGI、uWSGI等将请求转发给后端应用服务器。
  7. 访问控制和安全性:NGINX支持访问控制,可以根据访问规则来限制或允许特定的请求。此外,它还提供了一些安全性功能,如DDoS防护和IP黑名单。

总而言之,NGINX是一个灵活、高性能的服务器软件,可以实现反向代理、负载均衡、静态文件服务、SSL终止等多种功能,是构建高可用、高性能Web应用的重要组件之一。

Nginx的主要用途

NGINX的主要用途包括以下几个方面:

  1. 反向代理服务器:NGINX作为反向代理服务器,可以接收客户端请求,并将请求转发给后端的多个服务器。这样可以实现负载均衡、提高系统的性能和可用性。同时,NGINX还可以进行请求的过滤、缓存、SSL终止等操作。
  2. 负载均衡器:NGINX的负载均衡功能可以将请求分发给多个后端服务器,使服务器能够均匀地处理请求,提高系统的吞吐量和可伸缩性。
  3. 静态文件服务器:NGINX可以作为静态文件服务器,直接响应客户端对静态文件的请求。由于NGINX的高性能和高并发处理能力,它能够提供快速的静态文件传输。
  4. 反向代理缓存服务器:NGINX可以缓存后端服务器返回的响应,减少后端服务器的负载,提高系统的性能。它可以根据缓存策略和缓存规则来存储和更新缓存,并根据客户端请求判断是否使用缓存数据。
  5. SSL/TLS终止:NGINX可以充当SSL/TLS终止器,接收加密的客户端请求,对其进行解密,然后将明文请求转发给后端服务器。这样可以减轻后端服务器的负载,并且提供更高的安全性。
  6. 动态HTTP内容处理:除了处理静态文件,NGINX还可以将动态的HTTP请求转发给后端应用服务器,如使用FastCGI、uWSGI等协议进行通信。这样可以实现动态内容的处理,如动态网页、API请求等。
  7. 代码:Nginx代码完全用C语言从头写成,已经移植到许多体系结构和操作系统,包括Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。Nginx有自己的函数库,并且处理zlib、PCRE和OpenSSL之外,标准模块值使用系统C库函数。如果不需要或者考虑到潜在的授权冲突,可以不使用这些第三方库。

总结来说,NGINX的主要用途是作为反向代理、负载均衡器、静态文件服务器和缓存服务器。它具有高性能、高并发、可扩展性强的特点,适用于构建高可用、高性能的Web应用环境。

Nginx的特点

  • 跨平台

Nginx可以在多数Linux上编译运行,而且也有Windows的移植版本。

  • 配置简单

Nginx非常容易上手,配置风格跟程序开发一样简单。

  • 非阻塞、高并发连接

数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能够支撑5万并发连接,在实际生产环境中跑到2万~3万并发连接(这得益于Nginx使用最新的epoll模型)。

  • 事件驱动

通信机制采用epoll模型,支持更大的并发连接

Nginx服务架构

Nginx服务器使用Master、Worker多进程模式。主进程(Master Process)启动后,会接收和处理外部信号;主进程启动后,通过函数fork()产尘一个或多个子进程(Work Process),每个子进程会进行进程初始化、模块调用以及对事件的接收和处理等工作。

来看一张图了解Nginx服务架构

Nginx服务架构图

主进程

NGINX服务的主进程的主要功能包括:

  1. 接收和处理信号:NGINX的主进程负责接收和处理各种信号,如启动、停止、重新加载配置等信号。通过接收这些信号,主进程可以控制和管理NGINX的运行。
  2. 启动和管理工作进程:NGINX使用多进程模型,主进程负责启动和管理工作进程。在启动时,主进程会创建一定数量的工作进程,并在运行过程中监控工作进程的状态。如果某个工作进程异常退出,主进程会重新创建一个新的工作进程来替代它。
  3. 处理和分发请求:主进程负责接收客户端的请求,并将请求分发给工作进程。它接收到的请求会经过一系列的处理,如连接管理、HTTP协议解析、负载均衡等。然后,主进程选择一个工作进程来处理这个请求,工作进程会根据配置和规则进行相应的处理和响应。
  4. 监控系统资源和性能:主进程会定期监控系统资源的使用情况,如CPU、内存、磁盘等。通过监控这些信息,主进程可以进行负载均衡调度,将请求发送给资源使用较少的工作进程。此外,主进程还可以收集和记录性能指标,如请求处理时间、连接数等,用于监控和性能分析。
  5. 定时任务和周期性操作:主进程可以执行一些定时任务和周期性操作,如重新加载配置、日志文件切割、定期清理资源等。这些操作可以保证NGINX的正常运行和服务的稳定性。

总结来说,NGINX服务的主进程的主要功能是接收和处理信号、启动和管理工作进程、处理和分发请求、监控系统资源和性能,以及执行定时任务和周期性操作。它是整个NGINX服务的核心,负责协调和管理各个组件的运行。

子进程

NGINX服务子进程的主要功能是处理客户端的请求。子进程由主进程生成,生成数量可以在配置文件中定义,主要工作包括:

  1. 接收来自客户端的连接请求;
  2. 解析客户端请求,包括请求的方法、URI、HTTP协议版本、请求头等;
  3. 根据请求的内容,将请求转发给合适的上游服务器;
  4. 通过与上游服务器的通信,获取上游服务器返回的响应;
  5. 将上游服务器返回的响应发送给客户端;
  6. 处理客户端的下一次请求。

除了处理客户端请求外,子进程还会执行一些其他任务,如:

  1. 监听端口,等待客户端的连接请求;
  2. 负载均衡,根据配置的负载均衡策略将请求转发给不同的上游服务器;
  3. 缓存处理,将经常请求的静态资源缓存起来,提高响应速度;
  4. 日志记录,将请求及响应的相关信息记录到日志文件中,用于故障排查和性能分析;
  5. 进程管理,监控子进程的运行状态,自动重启故障进程。

总之,NGINX服务子进程的主要功能是接收和处理客户端的请求,并与上游服务器通信,将请求转发给上游服务器并将响应返回给客户端。同时,子进程还会执行一些其他任务,如负载均衡、缓存处理和日志记录等。

部署Nginx服务

Linux操作系统的单节点规划准备

基础环境部署

(1)修改主机名

使用远程连接工具连接到虚拟机,并对其虚拟机修改主机名

[root@localhost ~]# hostnamectl set-hostname nginx
[root@localhost ~]# hostnamectl
   Static hostname: nginx

上面修改完后使用“bash”或重连终端实现更名

(2)关闭防火墙及SElinux服务

两个节点都关闭防火墙firewalld及SElinux服务

[root@nginx ~]# systemctl stop firewalld
[root@nginx ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@nginx ~]# setenforce 0                //这个只是临时关闭,永久关闭要编辑配置文件/etc/selinux/config

(3)安装配置基础服务

首先拉取网络YUM源
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

安装基础环境
[root@nginx ~]# yum install gcc gcc-c++ openssl-devel zlib-devel zlib pcre-devel -y


创建指定用户,这个nginx用户要和下一篇文章部署的PHP服务器上创建的nginx两者ID一致,这里先创建用户
[root@nginx ~]# groupadd -g 1001 nginx
[root@nginx ~]# useradd -u 900 nginx -g nginx -s /sbin/nologin
[root@nginx ~]# tail -l /etc/passwd

nginx:x:900:1001::/home/nginx:/sbin/nologin

(4)安装配置nginx服务

nginx包下载(选择合适的包即可):nginx: download

因为我们使用的是源码安装,所以我们要将nginx-1.12.2.tar.gz压缩包上传至nginx节点

将压缩包上传至/usr/local/src目录下
[root@nginx ~]# ls /usr/local/src
nginx-1.12.2.tar.gz

解压到当前目录
[root@nginx ~]# cd /usr/local/src/
[root@nginx src]# tar -zxvf nginx-1.12.2.tar.gz

进入nginx-1.12.2 目录,编译并安装
[root@nginx src]# cd nginx-1.12.2
[root@nginx nginx-1.12.2]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src

[root@nginx nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_ssl_module --with-http_gzip_static_module --user=nginx --group=nginx

这行命令这么长我给大家做一个解释方便大家理解:
这是使用 Nginx 构建 Web 服务器的一行命令,正常安装的话我们是直接运行./configure命令,但是我们要为例后续构建web服务器

# `./configure`:运行 Nginx 的配置脚本。
# `--prefix=/usr/local/nginx`:指定 Nginx 安装的路径。
# `--with-http_dav_module`:开启 WebDAV 模块,使 Nginx 支持处理 WebDAV 相关请求。
# `--with-http_stub_status_module`:开启统计模块,可以查看 Nginx 运行状态。
# `--with-http_addition_module`:开启附加模块,如将响应内容附加到指定的响应中。
# `--with-http_sub_module`:开启替换模块,能够在 Nginx 给客户端响应前修改响应中的字符串。
# `--with-http_flv_module`:开启 FLV 流媒体模块,可以使用 Nginx 作为流媒体服务器进行视频的直播和点播。
# `--with-http_mp4_module`:开启 MP4 流媒体模块,可以使用 Nginx 作为流媒体服务器进行视频的点播。
# `--with-http_ssl_module`:开启 SSL 模块,使 Nginx 能够处理 HTTPS 请求。
# `--with-http_gzip_static_module`:开启 Gzip 压缩模块,可以对静态文件进行 Gzip 压缩。
# `--user=nginx`:设置 Nginx 进程所属用户。
# `--group=nginx`:设置 Nginx 进程所属用户组。
安装
[root@nginx nginx-1.12.2]# make && make install

编译和安装都完成后
创建软连接
[root@nginx nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

检查配置是否有问题
[root@nginx nginx-1.12.2]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

启动nginx
[root@nginx nginx-1.12.2]# nginx
测试查看端口,发现没有命令
[root@nginx nginx-1.12.2]# netstat -ntlp
-bash: netstat: command not found
YUM安装net-tools工具
[root@nginx nginx-1.12.2]# yum install -y net-tools

再次查看


[root@nginx nginx-1.12.2]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4688/nginx: master

发现80端口启动,则表示nginx服务启动成功

打开浏览器访问nginx IP地址来查看是否出现nginx欢迎页面!

至此,Nginx服务环境搭建完成! 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值