Nginx

引言

Nginx作为一款高性能的HTTP和反向代理服务器,在现代Web架构中扮演着至关重要的角色。它以轻量级、高并发、低内存消耗等特性深受开发者青睐。本文将解析Nginx的下载安装、核心配置及实践案例,帮助读者快速掌握Nginx的核心应用。


目录

引言

一、Nginx下载与安装

1.Windows系统安装

2.LInux 包管理器安装(推荐,适合快速部署)

3.Linux 源码编译安装(适合定制需求)

二、Nginx七层配置

1. 核心概念

2. 典型应用场景

3. 关键配置示例:看懂协议内容,用 http 模块

三、Nginx四层配置

1. 核心概念

2. 典型应用场景

3.关键配置示例: 只认 IP + 端口,用 stream 模块

四、Nginx 负载均衡器 案例

1.功能目标

2.集群设置

服务器规划

软件环境准备

3.配置步骤

3.1 后端 Web 服务器配置

3.2 Nginx 负载均衡器配置

4.查看效果

结语


一、Nginx下载与安装

1.Windows系统安装

  1. 访问Nginx官方网站下载稳定版本  (nginx: download
  2. 解压到本地目录(如C:\nginx
  3. 双击nginx.exe启动服务
  4. 访问http://localhost验证安装是否成功如下图:

2.LInux 包管理器安装(推荐,适合快速部署)

适用系统:Ubuntu/Debian、CentOS/RHEL、Fedora
优点:自动解决依赖,支持系统更新;缺点:版本可能较旧。

  1.  Ubuntu/Debian 系统

    # 更新包索引
    sudo apt update
    
    # 安装 Nginx
    sudo apt install nginx
    
    # 启动并设置开机自启
    sudo systemctl start nginx
    sudo systemctl enable nginx
    
  2. CentOS/RHEL 系统

    # 若未安装 EPEL 仓库
    yum install epel-release -y  
    
    # 安装 Nginx
    yum install nginx -y
    
    # 启动并设置开机自启
    systemctl start nginx 
    systemctl enable nginx
    
  3. 验证安装

    # 检查版本
    nginx -v

        

3.Linux 源码编译安装(适合定制需求)

优点:可自定义版本、模块;

缺点:步骤复杂,需手动解决依赖。

1. 安装依赖

# Ubuntu/Debian
apt install build-essential libpcre3 libpcre3-dev zlib1g-dev libssl-dev

# CentOS/RHEL
yum install gcc pcre-devel zlib-devel openssl-devel -y

 

2. 下载并编译源码

# 下载最新稳定版
wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0

# 配置(可按需添加模块)
./configure \
  --prefix=/usr/local/nginx \
  --with-http_ssl_module \
  --with-http_gzip_static_module \
  --with-http_stub_status_module

# 编译并安装
make && sudo make install

 

3. 启动nginx

/usr/local/nginx/sbin/nginx

二、Nginx七层配置

1. 核心概念

七层代理工作在 OSI 模型的应用层,基于 HTTP/HTTPS 协议内容 进行转发。
它能 “读懂” 请求的 URL、Host、请求头、Cookie 等信息,支持复杂的路由规则和高级功能。

2. 典型应用场景

  • Web 服务器负载均衡:根据域名或 URL 路径将请求分发到不同后端。
  • HTTPS 卸载:Nginx 处理 SSL 加密 / 解密,后端服务器使用 HTTP 通信。
  • 静态资源缓存:直接返回本地缓存的图片、CSS、JS 文件,减轻后端压力。
  • API 网关:根据 API 路径(如 /user/order)路由到不同微服务。

3. 关键配置示例:看懂协议内容,用 http 模块

# 七层的“专属模块”是 http
http {
    # 定义后端服务器组(但转发规则和内容相关)
    upstream web_servers {
        server 192.168.71.21:8080;
        server 192.168.71.22:8080;
    }

    # 不仅监听端口,还要解析 HTTP 内容
    server {
        listen 80;
        server_name example.com;  # 要识别域名(应用层信息)

        # 看 URL 路径转发(核心区别!四层做不到)
        location / {
            proxy_pass http://web_servers;  # 根路径转发
        }

        location /api {
            proxy_pass http://api_server;  # /api 路径单独转发
        }

        # 识别文件类型(应用层信息)
        location ~* \.jpg$ {
            root /var/www/images;  # 图片直接返回本地
        }
    }
}

三、Nginx四层配置

1. 核心概念

四层代理工作在 OSI 模型的传输层,基于 IP 地址和端口 进行转发。
它不解析应用层协议内容(如 HTTP 请求),仅做 “盲转发”,因此效率极高。

2. 典型应用场景

  • 数据库代理:转发 MySQL、PostgreSQL 等数据库连接,实现读写分离。
  • TCP 服务负载均衡:如 Redis 集群、游戏服务器、SSH 服务的端口转发。
  • 高性能转发需求:对延迟敏感的场景(如实时通信),四层转发接近硬件级性能。

3.关键配置示例: 只认 IP + 端口,用 stream 模块

# 四层的“专属模块”是 stream
stream {
    # 定义后端服务器组(只写 IP+端口)
    upstream mysql_servers {
        server 192.168.71.21:3306;  # 只关心“地址+端口”
        server 192.168.71.22:3306;
    }

    # 监听端口,收到数据就转发(不看内容)
    server {
        listen 3306;  # 客户端连接的端口
        proxy_pass mysql_servers;  # 直接转发到上面定义的服务器组
    }
}

四、Nginx 负载均衡器 案例

1.功能目标

借助 Nginx 负载均衡功能,将客户端请求合理分配到多台后端 Web 服务器,提升服务并发处理能力与可用性,实现:

  1. 请求分发:按策略(轮询、权重等)把客户端请求转发给后端服务器。
  2. 故障容错:后端某台服务器故障时,自动将请求切换到正常服务器,保障服务不中断。
  3. 会话管理(可选):通过 IP 哈希等策略,让同一客户端请求稳定落在同一台后端服务器,适配有登录态等业务场景。

2.集群设置

服务器规划

服务器功能ip
Nginx 负载均衡器接收并转发客户端 HTTP 请求192.168.71.5
后端 Web 服务器1实际处理请求,返回网页内容192.168.71.21
后端 Web 服务器2实际处理请求,返回网页内容192.168.71.22

软件环境准备

所有服务器:关闭防火墙(测试环境简化操作)

# CentOS/RHEL 系列
systemctl stop firewalld  
systemctl disable firewalld  

# Ubuntu/Debian 系列
ufw disable  

所有服务器:安装 Nginx

# CentOS/RHEL(需先启用 EPEL 源)
yum install -y epel-release  
yum install -y nginx  
systemctl start nginx        # 启动 Nginx 服务
systemctl enable nginx       # 设置开机自启

3.配置步骤

3.1 后端 Web 服务器配置

为方便验证负载均衡效果,让两台后端服务器返回不同内容,标识自身身份

后端服务器 1(192.168.71.21

echo "Backend Server: 192.168.71.21" > /usr/share/nginx/html/index.html

 后端服务器 2(192.168.1.22

echo "Backend Server: 192.168.71.22" > /usr/share/nginx/html/index.html 

3.2 Nginx 负载均衡器配置

编辑 Nginx 主配置文件(通常路径:/etc/nginx/nginx.conf 或 /etc/nginx/conf.d/default.conf ),添加负载均衡规则:

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

# 必须将 upstream 和 server 放在 http 块内
http {
    # 定义后端服务器集群,命名为 backend_servers
    upstream backend_servers {
        server 192.168.71.21:80;  # 后端服务器 1
        server 192.168.71.22:80;  # 后端服务器 2
        # 可选策略:weight=2; 或 ip_hash;
    }

    # 配置虚拟主机,处理客户端请求
    server {
        listen 80;
        server_name localhost;

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

    # 以下是默认的 HTTP 配置(保留原文件中的其他内容,如日志格式、 mime 类型等)
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include /etc/nginx/conf.d/*.conf;
}

重启 nginx

systemctl restart nginx

4.查看效果

浏览器访问验证

在能访问 Nginx 负载均衡器的机器(如本地电脑、其他服务器)浏览器中,访问 http://192.168.71.5(负载均衡器 IP )。多次刷新页面,默认轮询策略下,会交替显示两台后端服务器的标识内容,证明请求在两台服务器间分发

也可以用 curl 工具多次发送请求,直观地观察返回结果:

# 连续请求 5 次,查看返回内容
for i in {1..5}; do 
    curl http://192.168.1.100; 
    echo -e "\n--- 分割线 ---"; 
done  

结语

通过本文的介绍,我们从 Nginx 的下载安装入手,逐步了解了七层配置、四层配置的核心逻辑,最后通过负载均衡实战案例,将理论知识转化为可操作的实践技能。

Nginx 作为一款轻量高效的服务器工具,其价值不仅在于高性能的转发能力,更在于灵活的配置方式 —— 无论是简单的静态资源托管,还是复杂的多服务负载均衡,都能通过简洁的配置实现。

希望本文能为你使用 Nginx 提供清晰的指引。在实际应用中,不妨结合具体业务场景多做尝试,比如添加 HTTPS 配置、优化缓存策略等,逐步挖掘 Nginx 更强大的功能。遇到问题时,善用官方文档和日志排查,相信你能快速掌握并灵活运用这一实用工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓&呆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值