砍材农夫砍材农夫
  • 微信记账小程序
  • java
  • redis
  • mysql
  • 场景类
  • 框架类
  • vuepress搭建
  • hexo搭建
  • 云图
  • llm wiki

    • 基于karpathy
    • gradle
  • 常用工具

    • git
    • gradle
    • Zadig
    • it-tools
    • 开源推荐
    • curl
  • 大前端

    • 环境配置
    • 微信生态
    • 正则
    • 全栈技能
  • java圈

    • java基础
    • jdk体系
    • jvm
    • spring框架
    • 分库分表
    • zookeeper
  • python技能

    • python编程
    • python数据
  • 算法

    • 算法
  • 网关

    • spring_cloud_gateway
    • openresty
  • 高可用

    • 秒杀
    • 分布式
    • 缓存一致
  • MQ

    • MQ
    • rabbitMQ
    • rocketMQ
    • kafka
  • 其它

    • 设计模式
    • 领域驱动(ddd)
  • 关系型数据库

    • mysql5.0
    • mysql8.0
  • 非关系型数据库

    • redis
    • mongoDB
  • 分布式/其他

    • ShardingSphere
    • 区块链
  • 向量数据库

    • M3E
    • OPEN AI
  • Jmeter
  • fiddler
  • wireshark
  • AI入门
  • AI大模型
  • AI插件
  • AI集成框架
  • 相关算法
  • AI训练师
  • 量化交易
  • AIoT
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 相关运营
  • devops
  • 元宇宙
  • 区块链
  • 物联网
  • webrtc
  • web3.0
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 中考
  • 投资
  • 保险
  • 思
  • 微信记账小程序
  • java
  • redis
  • mysql
  • 场景类
  • 框架类
  • vuepress搭建
  • hexo搭建
  • 云图
  • llm wiki

    • 基于karpathy
    • gradle
  • 常用工具

    • git
    • gradle
    • Zadig
    • it-tools
    • 开源推荐
    • curl
  • 大前端

    • 环境配置
    • 微信生态
    • 正则
    • 全栈技能
  • java圈

    • java基础
    • jdk体系
    • jvm
    • spring框架
    • 分库分表
    • zookeeper
  • python技能

    • python编程
    • python数据
  • 算法

    • 算法
  • 网关

    • spring_cloud_gateway
    • openresty
  • 高可用

    • 秒杀
    • 分布式
    • 缓存一致
  • MQ

    • MQ
    • rabbitMQ
    • rocketMQ
    • kafka
  • 其它

    • 设计模式
    • 领域驱动(ddd)
  • 关系型数据库

    • mysql5.0
    • mysql8.0
  • 非关系型数据库

    • redis
    • mongoDB
  • 分布式/其他

    • ShardingSphere
    • 区块链
  • 向量数据库

    • M3E
    • OPEN AI
  • Jmeter
  • fiddler
  • wireshark
  • AI入门
  • AI大模型
  • AI插件
  • AI集成框架
  • 相关算法
  • AI训练师
  • 量化交易
  • AIoT
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 相关运营
  • devops
  • 元宇宙
  • 区块链
  • 物联网
  • webrtc
  • web3.0
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 中考
  • 投资
  • 保险
  • 思
  • nginx

    • nginx日常

      • 概念
      • 常用命令
      • nginx安装和部署
    • nginx实战

      • 基本配置拆解
      • 配置https证书
      • nginx负载配置
    • webUI

      • nginxWebUI
  • linuxs

    • 基础

      • 常用命令
      • grep
      • 防火墙
      • 基础常用命令
      • linux基础常用命令2
      • 配置应用自动启动
      • 自动同步北京时间
      • 防火墙操作
      • ifconfig无ip
      • Rocky-8无网络和局域网无法访问
    • 高级

      • 常用命令
      • vm虚拟机磁盘扩容
      • jdk安装
      • centos7 不显示IP
      • linux分析问题常用命令
      • linux任务管理
      • 权限控制
      • 记录用户操作日志
      • 日常分析问题命令介绍
      • 网络配置
      • cached过高问题
      • 找回删除文件
      • cpu负载突然升高
      • 磁盘爆满查找大文件
      • CentOS7系统配置国内yum源和epel源
    • vi

    • curl

  • docker

    • 基础
      • 安装和配置

        • window相关安装和配置
        • window基础简单操作
        • linux安装
        • 相关概念
      • 相关命令

        • 相关命令
        • docker镜像相关命令
      • 安装实例

        • 安装elasticsearch
        • docker其他常见快速部署
        • docker搭建mysql
        • docker备份mysql
        • docker更改mysql配置
        • docker搭建nexus
      • 其他

        • 镜像的迁移和备份
        • 网络
        • 常见错误集
        • docker部署hdfs
        • docker容器时间和本地时间不一致
        • docker批量操作
    • 日常运维

      • docker实例内文件下载
      • docker仓库搭建(Nexus)
      • docker仓库搭建(Hub)
    • docker-file

      • dockerfile入门
      • dockerfile(java应用)
    • docker-compose

      • docker-compose意义
  • k8s

    • 首页
      • window相关安装和配置
      • window基础简单操作
  • haproxy

    • haproxy部署实战

      • haproxy部署介绍
      • haproxy部署实战
      • haproxy案例分析
  • jenkins

    • 环境部署搭建
    • 自由风格构建应用发布
    • 获取远程git项目|分支选择
    • pipeline构建应用
    • pipeline结合docker构建应用
    • 权限管理
    • web项目构建
    • 集成maven获取远程项目
    • 视图细粒度权限管理
    • 其他日常操作案例
    • 版本升级或重装备份问题
    • 多模块关联关闭
  • prometheus

    • 首页
      • window相关安装和配置
      • window基础简单操作
  • gitlab

    • 首页
      • window相关安装和配置
      • window基础简单操作
  • maven

    • 首页
      • window相关安装和配置
      • window基础简单操作
  • elk

    • openobserve

      • docker部署openobserve
      • 采集器fluent
      • openobserve日常管理使用
  • 运维|devops|nginx|基本配置拆解
    • 最小单元
      • http模块
      • server模块
      • location模块
    • 简单配置
    • 反向代理
    • include模块化拆分
    • proxy_pass
      • 基础规则表(请求 /api/users,location /api/)
      • 完整组合样例表(覆盖 5 种实战场景)
    • 综合样例

运维|devops|nginx|基本配置拆解

最小单元

http {                      # 第1层:HTTP 全局配置
    server {                # 第2层:虚拟主机(站点)
        listen 80;
        server_name example.com;
        location / {        # 第3层:URL 路由
            root /var/www;  # 第4层: 静态页面地址
        }
    }
}

img

http模块

所有HTTP相关配置的最外层容器

一个nginx.conf只能有一个http块可定义多个server

server模块

定义一个虚拟主机(站点),通过listen和server_name区分不同的域名或端口

listen:监听的 IP 和端口(如 80、443 ssl)
server_name:匹配的域名(支持通配符和正则)
root / index:静态文件根目录和默认首页
ssl_certificate / ssl_certificate_key:SSL 证书路径

location模块

根据请求 URI 进行路由匹配,执行相应处理(如提供静态文件、转发到后端、重定向等)

  • 匹配规则
=:精确匹配,优先级最高
^~:前缀匹配,若匹配则不再检查正则
~(区分大小写)或 ~*(不区分)正则匹配
  • 常见处理
root / alias:指定文件路径
proxy_pass:转发请求到后端服务器
try_files:尝试多个文件/路径

简单配置

server {
    listen 80;
    server_name static.example.com;
    root /var/www/html;          # 所有 location 默认的根目录
    index index.html;            # 默认首页文件

    location /images/ {
        root /data;              # 实际路径为 /data/images/
    }

    location /css/ {
        alias /app/static/css/;  # alias 替换路径,实际为 /app/static/css/
    }
}

反向代理

  • 正向代理

(你平时用的 VPN/梯子),代表客户端你想访问谷歌,但直连被堵,于是你通过代理(VPN)出去,服务端(谷歌)不知道是谁在访问,只知道代理在访问(隐藏客户端)

  • 反向代理

反向代理(你现在的 Nginx),代表服务端,用户访问你的域名,但实际处理业务的是内网的 192.168.0.26:8085,客户端(用户)不知道背后有那么多服务器,只知道自己访问了 Nginx(隐藏服务端)

server {
    listen 80;
    server_name api.example.com;

    location / {
        proxy_pass http://backend_server;   # 转发到 upstream 或直接写 应用服务器IP
        proxy_set_header Host $host;        # 传递原始 Host 头
        proxy_set_header X-Real-IP $remote_addr;
    }
}

include模块化拆分

把大配置文件拆成多个小段文件便于维护,nginx.conf仅仅维护通用和全局的

proxy_pass

基础规则表(请求 /api/users,location /api/)

配置写法Nginx 转发给后端的路径效果说明
proxy_pass http://backend:8080;(无斜杠)/api/users保留前缀(原样传递)
proxy_pass http://backend:8080/;(有斜杠)/users截断前缀(替换为 /)

完整组合样例表(覆盖 5 种实战场景)

场景location 写法proxy_pass 写法请求示例转发给后端的实际 URI
标准保留前缀location /api/ {proxy_pass http://backend:8080;(无斜杠)/api/users/api/users
标准截断前缀location /api/ {proxy_pass http://backend:8080/;(有斜杠)/api/users/users
location 不带斜杠(保留)location /api {proxy_pass http://backend:8080;(无斜杠)/api/users/api/users
location 不带斜杠(截断)location /api {proxy_pass http://backend:8080/;(有斜杠)/api/users/users
路径替换(版本号重写)location /old_api/ {proxy_pass http://backend:8080/v2/;(带路径)/old_api/users/v2/users

综合样例

# /usr/local/nginx/conf/nginx.conf
user  nginx;
worker_processes  auto;
error_log  /var/log/nginx/error.log  warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    # 静态站点
    server {
        listen 80;
        server_name static.example.com;
        root /var/www/static;
        index index.html;
    }

    # 反向代理 + SSL
    server {
        listen 443 ssl;
        server_name api.example.com;

        ssl_certificate /etc/ssl/certs/api.pem;
        ssl_certificate_key /etc/ssl/private/api.key;

        location /api/ {
            proxy_pass http://backend:8080/;   # 去掉 /api 前缀
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }

        location /admin/ {
            proxy_pass http://backend:8080;    # 保留 /admin 前缀
            proxy_set_header Host $host;
        }
    }

    # HTTP 重定向到 HTTPS
    server {
        listen 80;
        server_name api.example.com;
        return 301 https://$host$request_uri;
    }
}
最近更新: 2026/7/17 11:38
Contributors: jysemel, kcnf
Next
配置https证书