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在处理动态资源了。

相关推荐
uzong5 小时前
技术故障复盘模版
后端
GetcharZp5 小时前
基于 Dify + 通义千问的多模态大模型 搭建发票识别 Agent
后端·llm·agent
桦说编程6 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
lifallen6 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研6 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
wyiyiyi6 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
没有bug.的程序员6 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
玩转以太网7 小时前
基于W55MH32Q-EVB 实现 HTTP 服务器配置 OLED 滚动显示信息
服务器·网络协议·http
甄超锋7 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
阿华的代码王国7 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端