Java-43 深入浅出 Nginx - 基本配置方式 nginx.conf Events块 HTTP块 反向代理 负载均衡

点一下关注吧!!!非常感谢!!持续更新!!!

🚀 AI篇持续更新中!(长期更新)

目前2025年06月05日更新到:
AI炼丹日志-28 - Audiblez 将你的电子书epub转换为音频mp3 做有声书,持续打造实用AI工具指南!📐🤖

💻 Java篇正式开启!(300篇)

目前2025年06月11日更新到:
Java-42 深入浅出 Nginx - 缘起与发展 场景与配置快速上手

MyBatis 已完结,Spring 已完结,深入浅出助你打牢基础!

📊 大数据板块已完成多项干货更新(300篇):

包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈!

目前2025年06月05日更新到:
大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT案例 详解

👉 点个关注,不迷路!后续还将持续更新更多大模型+数据智能+工程实战内容,敬请期待!

配置文件

Nginx的配置文件nginx.conf包含三个内容:

● 全局块

● events块

● http块

Nginx 的配置文件(通常为 /etc/nginx/nginx.conf)采用分块结构,主要包括以下三大类:

shell 复制代码
├── 全局块(main block)
├── events 块
└── http 块
     ├── server 块
     │    └── location 块

全局块 Main Block

从配置文件开始到events块之间的内容,此处的配置影响Nginx服务器整体的运行,比如Works进程的数量、错误日志的位置等。

  • 位置: 配置文件顶部
  • 作用: 配置影响整个 Nginx 服务的全局参数。
  • user:设置 Nginx 进程运行用户
  • worker_processes:工作进程数量,建议设为 CPU 核心数
  • error_log:指定错误日志路径和日志级别
  • pid:指定进程 ID 文件的位置
shell 复制代码
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /run/nginx.pid;

Events块

events主要影响Nginx服务器与用户的网络连接,比如 worker_connections 1024,标识每个process支持最大连接数是 1024

  • 位置: 紧接在全局块之后
  • 作用: 控制 Nginx 的连接处理模型,与高并发性能密切相关。
  • worker_connections:每个 worker 进程支持的最大连接数
  • use epoll:指定事件驱动模型(Linux 通常用 epoll)
shell 复制代码
events {
    worker_connections 10240;
    use epoll;
}

HTTP块

http块配置是变动最频繁的,虚拟主机的配置,监听端口的配置,请求转发、反向代理、负载均衡等。

  • 位置: 最核心模块
  • 作用: 处理所有基于 HTTP 协议的请求,包含服务器配置、反向代理、负载均衡等。
  • server 块:定义虚拟主机(监听端口、域名)
  • location 块:定义 URI 匹配规则和处理方式
  • upstream 块:定义上游服务器组(负载均衡)
  • log_format/access_log:定义日志格式
shell 复制代码
http {
    include       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;
    keepalive_timeout  65;

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

反向代理

需求一

部署tomcat,保持默认监听8080端口。

修改Nginx配置,并重新加载:

需求二

部署一台tomcat,保持监听8081端口

修改Nginx配置,重新加载:

该部分主要就是 多Location的使用,语法如下:

shell 复制代码
location [=|~|~*|^~] /uri/ { ... }

在Nginx配置文件中,location有如下几种形式:

● 1正则匹配 location ~ /xxx {}

● 2不区分大小写的正则匹配 location ~* /xxx {}

● 3匹配路径的前缀 location ^~ /xxx {}

● 4精确匹配 location = /xxx {}

● 5普通路径前缀匹配 location /xxx {}

优先级如下:4 > 3 > 2 > 1 > 5

负载均衡

轮询

默认策略,每个请求按时间顺序逐一分配到不同的服务器,如果某一个服务器下线,能自动剔除。

shell 复制代码
upstream wzk {
 server localhost:8080;
 server localhost:8082;
}

location /abc {
 proxy_pass http://wzk/;
}

weight

weight代表权重,默认每一个负载的服务器都为1,权重越高被分配的请求越多(用于服务器性能不均衡的场景)

shell 复制代码
upstream wzk {
 server localhost:8080 weight=1;
 server localhost:8082 weight=2;
}

ip_hash

每个请求按照ip的hash结果分配,每一个客户端的请求会固定分配到同一个目标服务器处理,可以解决Session问题

shell 复制代码
upstream wzk {
 ip_hash;
 server localhost:8080 weight=1;
 server localhost:8082 weight=2;
}

动静分离

动静分离就是将动态资源和静态资源的请求处理分配到不同的服务器上,比较经典的组合就是Nginx+Tomcat(Nginx处理静态资源,Tomcat处理动态资源),之前的例子中,Nginx反向代理目标服务器Tomcat,我们看到目标服务器ROOT的项目 index.jsp,这本身就是Tomcat在处理动态资源了。

相关推荐
从未、淡定2 小时前
HTTP 网络协议演进过程
网络·网络协议·http
编程乐学(Arfan开发工程师)4 小时前
56、原生组件注入-原生注解与Spring方式注入
java·前端·后端·spring·tensorflow·bug·lua
周某某~5 小时前
七.适配器模式
java·设计模式·适配器模式
Elcker6 小时前
Springboot+idea热更新
spring boot·后端·intellij-idea
奔跑的小十一6 小时前
JDBC接口开发指南
java·数据库
刘大猫.6 小时前
业务:资产管理功能
java·资产管理·资产·资产统计·fau·bpb·mcb
YuTaoShao6 小时前
Java八股文——JVM「内存模型篇」
java·开发语言·jvm
开开心心就好7 小时前
电脑扩展屏幕工具
java·开发语言·前端·电脑·php·excel·batch