启动Nginx

为什么企业喜欢nginx?

Nginx 是一款高性能的 HTTP 反向代理 / 负载均衡服务器,同时具备静态资源服务、高可用、安全防护等多重能力。

  1. 反向代理(企业 "隐藏后端" 的关键手段)
  • 定义:Nginx 作为 "中间代理",接收客户端请求后转发给后端真实服务器,再将响应返回给客户端。

  • 价值:

    • 隐藏后端服务器真实 IP,提升系统安全性(攻击者无法直接访问后端);

    • 统一处理请求(如鉴权、日志、缓存、HTTPS 加密),减少后端重复开发;

    • 示例:用户访问 192.168.0.1/hello,Nginx 自动转发到 192.168.0.2/aaa/bbbb,用户无感知。

  1. 负载均衡(企业 "集群高并发" 的核心方案)
  • 定义 :当后端有多台服务器组成集群时,Nginx 将请求均匀 / 按策略分发到不同服务器,避免单台过载。

  • 常见策略:

    • 轮询:默认策略,请求依次分发到后端服务器(适合服务器性能均匀的场景);

    • 权重(weight) :给服务器设置不同权重(如 server 192.168.0.2 weight=3;),资源好的服务器分配更多请求(适合灰度发布、服务器性能不均的场景);

    • ip_hash:根据客户端 IP 哈希,确保同一 IP 用户始终访问同一台服务器(适合有会话保持需求的场景,如电商购物车);

    • 最少连接(least_conn):将请求发给当前连接数最少的服务器(适合长连接场景,如即时通讯)。

  1. 静态资源服务(企业 "提速降本" 的利器)

Nginx 处理 HTML、CSS、JS、图片、视频等静态文件 效率极高,原因是其异步非阻塞架构 和 sendfile 技术(直接从磁盘读取文件并快速响应)。

  • 价值:将静态资源从后端应用服务器剥离,由 Nginx 直接托管,大幅减轻后端压力,提升页面加载速度。
  1. 高可用(HA,企业 "服务不中断" 的保障)

通过 Nginx + Keepalived 构建主从架构:主 Nginx 故障时,从 Nginx 自动接管服务,保证 7×24 小时不中断。

  1. 动静分离

将动态请求 (如 API 接口)转发给后端应用服务器,静态请求(如前端页面、图片)由 Nginx 直接处理,实现资源 "分工协作",提升整体响应速度和服务器利用率。

  1. 缓存与限流
  • 缓存:Nginx 可缓存静态资源或动态接口的响应,减少后端请求次数,降低带宽消耗(如电商首页商品列表可缓存 10 分钟);

  • 限流 :通过 limit_req(限制请求频率)、limit_conn(限制并发连接数)模块,防止恶意攻击或流量突增压垮系统。

  1. 安全防护
  • 配置防火墙规则(deny/allow 指令),限制特定 IP 或网段访问;

  • 集成 SSL 证书实现 HTTPS 加密传输,保障数据安全;

  • 过滤恶意请求(如 SQL 注入、XSS 攻击),提升系统安全性。

启动Nginx

编写docker-compose.yml文件:

bash 复制代码
version: '3.1'

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    restart: always
    ports:
      - "81:80"
      - "80:81"
      - "443:443"
    #volumes:
    # - ./nginx.conf:/etc/nginx/nginx.conf:ro
    #加这两行:Nginx 会使用你在宿主机编写的 nginx.conf(自定义配置),实现反向代理、负载均衡等个性化需求。
    #不加这两行:Nginx 会使用镜像自带的默认配置,只能提供基础的静态文件服务(默认首页),没有自定义功能。
    networks:
      - test
# docker 容器内网地址
networks:
  test:
    external: true

导入nginx镜像

bash 复制代码
docker load -i nginx.tar

创建网络组

bash 复制代码
docker network create test

启动容器

bash 复制代码
docker-compose up -d
相关推荐
jason成都1 天前
RTKLIB 的 Java 移植版来了:rtklib-java v3.3.0 功能全景
java·gnss·rtklib·rtklib_java
LazyHunter91 天前
JDK 28:Java 下一步方向解析与新特性展望
java·jdk
m0_639906941 天前
Java 重写 Override 与重载 Overload 区别、访问修饰符、static 关键字
java·开发语言
云宏信息1 天前
超融合和存算分离怎么选?从性能、可靠性、扩展、成本四个维度讲述如何精准匹配架构选型 | 附企业降本轻量云方案
运维·服务器·架构·云计算
GIS数据转换器1 天前
基于CIM的城市智慧供热监管服务平台
java·大数据·开发语言·人工智能·后端·物联网·struts
snpgroupcn1 天前
能源行业SAP系统升级的技术约束分析:资产数据连续性与切换窗口的工程处理(上篇)
架构·sap
m0_639906941 天前
SpringBoot自动配置原理
java·spring boot·后端
4SAPI1 天前
会议智能处理大模型 API 生产选型指南:4SAPI、硅基流动与 OpenRouter 的架构权衡
人工智能·架构·自动化·gateway·php
海鸥-w1 天前
数据库冗余字段设计笔记
java·数据库·笔记·oracle
工具派1 天前
PDF签名贴上去为什么发虚?尺寸、DPI与坐标的边界实测
java·python·pdf