nginx

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > nginx > Nginx服务部署与配置

Nginx服务部署与配置全过程

作者:Tianzs_

Nginx是一个高性能的Web服务器和反向代理服务器,具有高并发、高可靠性、热部署等特性,它支持HTTP、HTTPS、IMAP、POP3和SMTP协议,适用于静态资源服务、反向代理、负载均衡和API网关等场景,文章还介绍了Nginx的安装、升级和反向代理配置方法

一、 概述

Nginx 是开源、高性能、高可靠的 Web服务器 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。

性能是 Nginx 最重要的考量,其占用内存少、并发能力强、能支持高达 5w 个并发连接数,最重要的是, Nginx 是免费的并可以商业化,配置使用也比较简单。

1.1 Nginx 特点

1.2 Nginx 作用

Nginx 是一个高性能的 HTTP反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。它的工作原理主要基于 事件驱动架构异步非阻塞 I/O 模型,使其能够高效处理大量并发连接。以下是 Nginx 的核心工作原理:

1.3 Nginx工作原理

1. 事件驱动架构(Event-Driven)

Nginx 采用 事件驱动 模型(如 epollkqueue),而不是传统的多线程/多进程模型(如 Apache 的 prefork)。

优势

2. 多进程模型(Master-Worker)

Nginx 启动时分为两类进程:

Master 进程

Worker 进程

优势

3. 异步非阻塞 I/O

Nginx 使用 非阻塞 I/O 操作:

对比传统阻塞模型

4. 请求处理流程

接收请求

解析请求

匹配 Location

处理静态/动态内容

返回响应

5. 高性能关键设计

6. 扩展性

总结:

Nginx 的高性能源于:

  1. 事件驱动 + 非阻塞 I/O:用少量进程处理高并发。
  2. 多进程隔离:避免单点故障,利用多核 CPU。
  3. 高效内存/文件处理:零拷贝、内存池等优化。

适合场景:静态资源服务、反向代理、负载均衡、API 网关等。

二、Nginx服务搭建

2.1 Ningx安装

2.1.1 yum安装

yum 安装默认安装在

[root@nginx1~]#yum install -y nginx
##验证安装结果
[root@nginx1~]#rpm -q nginx
nginx-1.20.1-7.el7.x86_64

2.1.2 编译安装

[root@bogon ~]# tar xf nginx-1.25.3.tar.gz 
[root@bogon ~]# ls
anaconda-ks.cfg  ceph-release-1-1.el7.noarch.rpm  nginx-1.25.3  nginx-1.25.3.tar.gz
[root@bogon ~]# yum install -y pcre-devel
[root@bogon ~]# yum install -y zlib-devel
[root@bogon ~]# cd nginx-1.25.3
[root@bogon nginx-1.25.3]# ./configure --prefix=/usr/local/nginx
checking for OS
 + Linux 3.10.0-1160.el7.x86_64 x86_64
checking for C compiler ... found
 + using GNU C compiler
 + gcc version: 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 

三、Nginx服务平滑升级

3.1 Nginx添加新模块

在已编译安装Nginx的基础上添加–with-http_image_filter_module模块。

(1)进入Nginx解压目录

[root@bogon nginx-1.25.3]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.25.3
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
configure arguments: --prefix=/usr/local/nginx

(2)添加–with-http_image_filter_module模块。

[root@bogon nginx-1.25.3]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.25.3
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
configure arguments: --prefix=/usr/local/nginx  –with-http_image_filter_module
[root@bogon nginx-1.25.3]# make

备份原Nginx二进制文件

[root@bogon nginx-1.25.3]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

复制新的nginx二进制文件,进入新的nginx源码包

[root@bogon nginx-1.25.3]# cp /root/nginx-1.25.3/objs/nginx /usr/local/nginx/sbin/nginx

测试新版本的nginx是否正常

[root@bogon nginx-1.25.3]# /usr/local/nginx/sbin/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

3.2 Nginx版本升级

1.25版本------>1.27版本

#解压新版本
[root@bogon ~]# tar zxf  nginx-1.27.3.tar.gz -C /usr/local/
[root@bogon ~]# cd /usr/local/nginx-1.27.3/
[root@bogon nginx-1.27.3]# ./configure --prefix=/usr/local/nginx
checking for OS
 + Linux 3.10.0-1160.el7.x86_64 x86_64
checking for C compiler ... found
#进行编译
#注意:这里不能进行,make install 操作,否则将会被覆盖,可能会影响线上业务。
[root@bogon nginx-1.27.3]# make 
#拷贝Nginx1.27版本的二进制文件到1.25版本
[root@bogon ~]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak  #先备份一份
[root@bogon ~]# cp /usr/local/nginx-1.18.0/objs/nginx /usr/local/nginx/sbin/
#启动新的主进程,查看升级后的版本
[root@bogon ~]# kill -USR2 $(cat /usr/local/nginx/logs/nginx.pid)
#查看升级后的版本
[root@bogon ~]# /usr/local/nginx/sbin/nginx -V

四、Nginx服务反向代理

概述

什么是反向代理

反向代理代理的是服务端

反向代理:(reverse proxy),指的是代理外网用户的请求到内部的指定的服务器,并将数据返回给用户的一种方式

客户端不直接与后端服务器进行通信,而是与反向代理服务器进行通信,隐藏了后端服务器的 IP 地址

4.1反向代理实战

要求主机访问反向代理服务器时,其实是去找服务器,隐藏服务器ip地址

反向代理服务器 安装nginx 配置好文件

在nginx.conf中配置

 server {
        listen       80;
        server_name  localhost;

        location / {
            proxy_pass http://192.168.49.136;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
#测试nginx
nginx -t
#重新加载
nginx -s reload

五、Nginx服务负载均衡

服务端 192.168.49.136 ;客户端 192.168.49.135

当客户端发送请求时,NGINX作为反向代理服务器接收请求,并根据配置的负载均衡算法将请求转发到后端的多个服务器上,实现负载均衡。

常见配置参数

location / {
        proxy_pass http://192.168.49.136;
        proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto $scheme;
}

轮询实现负载均衡配置:

upstream group1{
    server 192.164.49.134;
    server 192.164.49.136;
    }
    location / {
    pass_proxy http://group1;
}


nginx -t
nginx -s reload
#重新加载

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文