一. Nginx是什么?
1. Nginx概述
它是一款高性能、轻量级的Web服务软件,消耗系统资源很少,可以处理大量并发HTTP连接。单个物理服务器可以支持30,000到50,000个并发请求。 Nginx(发音与“engine x”相同)是高性能的。反向代理和Web 服务器软件由俄罗斯的Igor Sysoev 开发。第一个版本于2004 年发布,源代码在2-clause BSD 许可证下发布。 Nginx因其资源消耗低、运行稳定、高性能并发能力而被互联网公司广泛使用。 Nginx是互联网上最流行的开源Web服务器之一,提供了一整套用于开发和交付的应用技术,也是应用交付领域的开源领导者。 2019 年3 月,F5 宣布将收购Nginx,作为F5 的一部分。 F5表示将加大对开源和Nginx应用平台的投入,致力于发展Nginx开源技术、开发者和社区。
2. Nginx模块与作用
主模块:全局设置模块。配置将运行nginx服务器的用户(组)、worker_processes(进程)数量、nginx进程的PID存储路径、错误日志存储路径、配置文件的引入等。流服务模块:实现反向代理功能,包括TCP协议代理。邮件服务模块:支持Nginx邮件服务,支持POP3、IMAP、SMTP协议。第三方模块:二次开发,扩展Nginx服务器应用,完成开发者定义的功能(例如Json支持、Lua支持等)。 events 模块:影响nginx 服务器和用户之间的网络连接。事件{
工人连接65536;
使用epoll。
打开accept_mutex。
多重接受;
}
http模块:与Web服务相关,扩展了标准HTTP功能,包括自定义服务日志记录、sendfile传输文件、连接超时、单连接请求限制、Flash多媒体传输、GeoIP请求解析以及处理一些特殊服务。安全协议SSL 支持等location模块:uri URL定位。服务器模块:配置服务模块、80端口监控、虚拟主机、DNS域名解析等。 auth_basic 模块:设置网页的用户名和密码。 gzip模块:压缩。代理模块:配置后端IP地址、端口号、http和加密https。 ssl模块:https加密。
3. Nginx三大作用:反向代理、负载均衡、动静分离
反向代理:配置在服务器端,客户端访问服务器A。服务器A是代理服务器,将客户端请求转发到服务器B。
特点:缓存服务器响应,将用户请求分配到多台服务器,减少服务器负载均衡。正向代理:配置在客户端,代理服务器代表客户端与目标服务器进行交互。
特点:提高访问速度,隐藏客户端真实IP地址。负载均衡:将执行分配给多个操作单元(Web服务器、FTP服务器等),共同完成工作任务。
Nginx 7层负载均衡调度算法:
轮询(默认):每个请求按时间顺序分配到不同的后端服务器。上游后端服务器{
服务器192.168.10.14:80 max_fails=2,fail_timeout=10s;
服务器192.168.10.15:80 max_fails=2fail_timeout=10s;
}
加权轮询:指定轮询概率。权重值与访问率成正比。上游后端服务器{
服务器192.168.10.14:80 权重=5 最大失败=2 失败超时=10 秒;
server192.168.10.15:80weight=10max_fails=2fail_timeout=10s;
}
IP哈希:为了解决会话保留问题,根据访问IP的哈希结果分配每个请求。上游后端服务器{
ip_哈希;
服务器192.168.10.14:80 max_fails=2,fail_timeout=10s;
服务器192.168.10.15:80 max_fails=2,fail_timeout=10s;
}
最小连接数:根据Nginx反向代理与后端服务器之间的连接数进行分配,连接数最少的先分配。上游后端服务器{
最小连接数;
服务器192.168.0.14:80 max_fails=2fail_timeout=10s;
服务器192.168.0.15:80 max_fails=2fail_timeout=10s;
}
响应时间(需要编译安装第三方模块):根据后端服务器的响应时间分配请求,响应时间最短的优先。上游后端服务器{
公平的;
服务器192.168.10.14:80 max_fails=2,fail_timeout=10s;
服务器192.168.10.15:80 max_fails=2,fail_timeout=10s;
}
URL哈希(需要编译安装第三方模块):根据访问的URL的哈希结果分发请求,保证相同的URL访问同一台后端服务器。上游后端服务器{
服务器192.168.10.14:80 max_fails=2,fail_timeout=10s;
服务器192.168.10.15:80 max_fails=2,fail_timeout=10s;
哈希$request_uri;
}
动静态分离:通过代理模式,将正则匹配的位置添加到服务器段中,以指定匹配项。 {}静态页面由Nginx 处理,动态页面由PHP-FPM 模块或Apache 处理。
二. Nginx和Apache的差异
Apache
同步多进程模型:一个连接对应一个进程,稳定性高。优势:
重写功能强大(URL跳转实现)。模块很多,基本上都能找到你需要的。它非常稳定并且几乎没有错误。 PHP 支持很简单。处理动态请求更有优势。
Nginx
异步非阻塞模型:支持每个进程的多个连接(万级)并提供高性能。优势:
它是轻量级的,用C 语言编写,并且使用更少的内存和资源。非并发/高并发,高负载能力。静态文件处理性能比Apache 快三倍以上。该设计是高度模块化的,创建模块很容易。虽然配置很简单,但常规配置更简单,您可以使用-t 测试配置。作为负载均衡服务器,支持7层负载均衡,有效防止DDoS攻击。它可以用作反向代理服务器或电子邮件代理服务器。支持热部署和在线升级。
通过这些比较,您可以根据自己的具体需求在Nginx 和Apache 之间进行选择。
三、Nginx的应用场景
网络服务器:
Nginx可以作为一个独立的HTTP服务器来提供HTTP服务。它可以高效处理静态资源(HTML、CSS、JavaScript、图像文件等)的请求,使其成为高性能的静态服务器。 虚拟主机:
Nginx可以在一台物理服务器上配置多个虚拟主机,以适应不同的网站。这可以使用不同的IP 地址、端口号或域名来完成。此功能在托管多个网站时非常有用,并且可以节省硬件成本。 反向代理服务器和负载均衡:
随着网站访问量的增加,单个服务器可能不再能够满足所有用户请求。您可以使用Nginx作为反向代理服务器,将请求分发到多个后端服务器以实现负载均衡。这样就可以保证每台服务器的负载均衡,不会出现服务器过载或闲置的情况。 Nginx还支持各种负载均衡策略,例如轮询、IP哈希等。 安全管理:
Nginx 允许您配置安全管理功能,例如构建API 接口网关。这样Nginx就可以对各个接口服务进行拦截并进行安全检查,防止恶意攻击和未授权访问,提高系统安全性。 缓存服务器:
可以使用Nginx作为缓存服务器,将经常访问的资源缓存在内存中,加快资源访问速度,降低服务器负载,提高整体性能。
四、Nginx为什么能支持高并发
Nginx支持高并发的主要原因是它采用了异步非阻塞架构,利用了Linux的epoll机制,并且可以优化配置细节。
异步非阻塞架构:
如果每个请求都由单独的进程或线程处理,则会消耗大量系统资源并且效率非常低,尤其是在等待网络传输时。 Nginx采用异步非阻塞的运行模式可以有效避免这个问题。 Nginx有一个主调度进程和多个工作进程,当请求到达时,主进程将请求分配给工作进程进行处理。由于大部分请求处理时间都花在了网络传输上,而实际上花在服务器上的时间并不多,Nginx 可以用少量进程高效处理大量并发请求。
五、为什么Nginx不使用多线程
Nginx 使用单线程异步且非阻塞地处理请求。管理员可以配置Nginx主进程的工作进程数量。主要原因有:
节省您的资源。
Nginx不会为每个请求单独分配CPU和内存资源,这显着节省了系统资源。减少CPU 上下文切换。
使用单线程可以避免频繁的上下文切换并提高系统效率。
这样的设计可以让Nginx支持更高的并发,处理更多的请求。
六、Nginx的两种进程分别有什么作用
Nginx 有两个主要进程:master 进程和worker 进程。
主流程:
它负责管理worker进程,读取和加载Nginx配置文件,以及控制Nginx启动、重启和关闭。工人进程:
处理实际的连接请求。每个工作进程处理多个连接,并且可以以异步和非阻塞的方式有效地处理。
七、编译安装nginx
cd /选择/
tar zxvf nginx-1.22.0.tar.gz -C /opt/
cd nginx-1.22.0/
./configure –prefix=/usr/local/nginx –user=nginx –group=nginx –with-http_stub_status_module
make -j16 安装
bash setup-local-yum-repo.sh
yum -y 安装gcc PCRE 开发openssl 开发zlib 开发openssl openssl 开发
make -j16 安装
make -j16 安装
LS
rm setup-local-yum-repo.sh
cd nginx-1.22.0/
./configure –prefix=/usr/local/nginx –user=nginx –group=nginx –with-http_stub_status_module
make -j16 安装
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
tee /lib/systemd/system/nginx.service eof
[单元]
描述=nginx
之后=网络.目标
[服务]
类型=叉子
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -1 $MAINPID
ExecStop=/bin/kill -3 $MAINPID
PrivateTmp=true
[安装]
WantedBy=多用户.Target
埃欧
chmod 777 /lib/systemd/system/nginx.service
sudo useradd -r -d /var/www -s /sbin/nologin nginx
重新加载systemctl 守护进程
使用systemctl启动nginx
百胜安装
Centos7需要安装epel源
cd /etc/yum.repos.d
vim epel.repo
[埃佩尔]
姓名=埃佩尔
baseurl=https://mirrors.aliyun.com/epel/$releasever/x86_64
gpg检查=0
yum install -y epel-release
百胜安装nginx -y
#以上关于nginx的好处及应用场景、编译、安装、nginx相关内容来源网络仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92752.html