docker nginx 配置文件详解
在平常的开发工作中,我们经常需要访问静态资源(图片、HTML页面等)、访问文件目录、部署项目时进行负载均衡等。那么我们就会使用到Nginx,nginx.conf 的配置至关重要。那么今天主要结合访问静态资源、负载均衡等总结下 nginx.conf 的配置要点及注意事项。
1:概述
Nginx 是高性能、轻量级的 web 服务器和反向代理服务器。Nginx 可以作为静态内容服务,如访问HTML页面、图片等。Nginx 可以作为作为反向代理服务器,隐藏服务器真实IP,用户只知道 Nginx 的地址,这样可以提高服务安全性。Nginx 可以将动态内容请求转发给后端应用服务器。Nginx 可以将客户端请求分发给后端服务器,通过配置实现负载均衡,提高系统的可用性。
2:访问静态资源
1:静态资源在同一个目录
(1):挂载目录配置
# 页面目录 前面的为宿主机目录 后面的为容器目录,如果容器中的目录不存在,则会自动创建- /docker/nginx/html:/usr/share/nginx/html
(2):nginx.conf 配置文件
路径 root 配置:适合 location 路径与文件路径一致的情况,路径是拼接的。如 location 为 /wx/,root 配置为 /usr/share/html,则访问的完整目录 为 /usr/share/html/wx/,会把 location 路径拼接在 root 路径后面。
user nginx;
worker_processes auto;http {include /etc/nginx/mime.types;default_type application/octet-stream;server {listen 80;server_name localhost;charset utf-8;location / {root /usr/share/nginx/html; #路径为容器内的路径,通过挂载目录,实际访问到宿主机目录}}
}
路径 alias 配置:适合 location 路径与文件路径不一致的情况,路径是替换的。如 location 配置为 test,alias 配置的文件目录为 /usr/share/html/wx/,则访问的目录即为 /usr/share/html/wx/,会把 location 的路径替换为 alias 配置的路径。所以建议 alias 后面的路径配置的尽可能就是静态资源所在的目录,这样访问起来更加方便。
user nginx;
worker_processes auto;http {include /etc/nginx/mime.types;default_type application/octet-stream;server {listen 80;server_name localhost;charset utf-8;location /test/ {alias /usr/share/nginx/wx/;}}
}
(3) 访问测试:http:ip:端口/文件路径/test.jpg

2:静态资源在多个目录
(1):挂载目录配置,需要配置多个挂载目录
# 页面目录
- /docker/nginx/html/images:/usr/share/nginx/html
- /docker/nginx/html/photo:/usr/share/nginx/wx
(2):nginx.conf 配置文件:
user nginx;
worker_processes auto;http {include /etc/nginx/mime.types;default_type application/octet-stream;server {listen 9016;server_name localhost;charset utf-8;# 路径 root 方式配置# 通过 /html/ 访问,即文件路径为 /usr/share/nginx/html/ 目录location /html/ {root /usr/share/nginx;}# 通过 /wx/访问,即文件夹路径为 /usr/share/nginx/wx/ 目录location /wx/ {root /usr/share/nginx;}# 路径 alias 方式配置# 通过 /html/ 访问,即文件路径为 /usr/share/nginx/html/ 目录location /html/ {alias /usr/share/nginx/html/; # 配置后面带 /}# 通过 /wx/访问,即文件夹路径为 /usr/share/nginx/wx/ 目录location /wx/ {alias /usr/share/nginx/wx/; # 配置后面带 /}}
}
(3):访问图片

(4) 总结:root 和 alias 都用于指定路径,在 docker 容器中,指向的都是容器中的路径,即需要配置挂载目录,将宿主机的目录挂载到容器指定的目录。root 中路径配置,特别注意最后面没有 / ,根据路径访问时会将 location 的路径拼接到 root 指定的路径后面,root 配置路径方式是进行路径拼接。alias 配置路径,特别注意后面有 / ,alias 路径配置方式访问时,匹配对应的 location,会将内容替换为 alias 中配置的完整路径。简而言之,root 是路径拼接,alias 是路径替换。
3:访问共享目录
我们经常需要将常用的软件、文件等归纳整理放在服务器的某个文件夹下,为了使用更加的方便,这个时候,就需要访问服务器上的某个目录。
(1) nginx.conf 配置
user nginx;
worker_processes auto;error_log /var/log/nginx/error.log notice;
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 localhost;charset utf-8;location /test/ {alias /usr/share/nginx/wx/;autoindex on; # 开启自动索引,如果不需要可以去掉autoindex_exact_size off; # 显示文件大小autoindex_localtime on; # 显示文件时间 }}
}
上面配置中一定要注意,如果不添加 autoindex on,on 开启自动索引,那么访问文件夹时会报 403 forbidden。autoindex on 用于启用目录列表功能,当访问没有默认索引文件的目录时,Nginx会自动生成包含该目录及子目录的 HTML 页面并返回给客户端。
(2):测试如下:

4:负载均衡配置
(1):如果服务是单节点,则不涉及负载均衡配置
user nginx;
worker_processes auto;pid /var/run/nginx.pid;events {worker_connections 1024;
}http {include /etc/nginx/mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 60;server {listen 80;server_name localhost;charset utf-8;location / {proxy_pass http://localhost:8008;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}
}
(2):服务多节点负载均衡配置
负载均衡将请求分发到不同的后端服务节点,这样可以减轻服务压力,提高服务可用性。负载均衡可以更加合理的利用服务器的资源,有的服务器配置高,有的服务器剩余资源少,那么权重轮询可以更加合理的使用服务器的资源。
负载均衡部署方式可以是同一个机器多个节点,也可以是多机器多节点。单机器多节点的有点在于资源利用率高、不存在跨节点通信的问题。通常用于开发环境、小型应用、或者非关键服务。单机器多节点存在单点故障的问题,多节点共享资源,存在性能问题。多机器多节点性能高、方便拓展、不存在单点故障的问题,缺点是成本高、如果跨机通信,维护和配置复杂。多机器多节点适用于中大型应用,对性能要求高的服务。
user nginx;
worker_processes auto;error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;events {worker_connections 1024;
}http {include /etc/nginx/mime.types;default_type application/octet-stream;access_log /var/log/nginx/access.log main;sendfile on;#tcp_nopush on;keepalive_timeout 65;#gzip on;# 负载均衡,两个节点的ip和端口,配置ip和端口即可,不需配置http头信息# upstream 定义一组后端服务器# 默认负载均衡方式,将请求依次发送给后端服务节点upstream backend {server 11.22.xx.xx:8001;server 11.22.xx.xx:8002;}# 加权轮询,权重越大的节点处理的请求越多upstream backend {server 11.22.xx.xx:8001 weight=8;server 11.22.xx.xx:8002 weight=2;}# ip 哈希轮询 根据客户端的 IP 地址进行哈希计算,确保同一个客户端的请求总是分配给同一台后端服务器。upstream backend {ip_hash; # 启用 IP 哈希server 11.22.xx.xx:8001;server 11.22.xx.xx:8002;}server {listen 80;server_name localhost;charset utf-8;location / {proxy_pass http://backend; # 将请求转发到 upstream 组,proxy_pass 将请求转发给指定的目标服务器proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}
}
nginx 常用轮询方式:
默认轮询:默认轮询方式会将请求依次转发给后端服务器
加权轮询:配置不同的权重,权重越大的服务器处理的请求越多。主要常用于不同服务器的配置、性能有差距,或者剩余服务器资源的合理利用。
IP 哈希轮询:根据客户端的 IP 地址进行哈希计算,确保同一个客户端的请求总是分配给同一台后端服务器。根据客户端 IP 分配请求,适合会话保持。
以上为 Nginx 主要内容,在平常的开发工作中,可以进行静态资源的访问。如有小程序静态资源、pc端静态资源,则将不同的静态资源放在不同的目录下,配置不同的挂载目录。root 类型配置的 location 路径会拼接到 root 配置的路径后面。alias 类型配置的 location 路径主要是访问使用,实际是将其替换为 alias 后面配置的路径。所以 root 适用于访问路径和静态资源路径一致的场景,alias 适用于访问路径和静态资源路径不一致的场景。使用负载均衡配置配置,可以更加合理的使用服务器的资源,提高服务可用性。
相关文章:
docker nginx 配置文件详解
在平常的开发工作中,我们经常需要访问静态资源(图片、HTML页面等)、访问文件目录、部署项目时进行负载均衡等。那么我们就会使用到Nginx,nginx.conf 的配置至关重要。那么今天主要结合访问静态资源、负载均衡等总结下 nginx.conf …...
如何实现华为云+deepseek?
在华为云上实现跨账号迁移数据或部署DeepSeek模型,可以通过以下步骤完成: 跨账号数据迁移 创建委托:在源账号中创建一个委托(Agency),授予目标账号访问数据的权限。 复制镜像:在源账号中&…...
【学习笔记】计算机网络(三)
第3章 数据链路层 文章目录 第3章 数据链路层3.1数据链路层的几个共同问题3.1.1 数据链路和帧3.1.2 三个基本功能3.1.3 其他功能 - 滑动窗口机制 3.2 点对点协议PPP(Point-to-Point Protocol)3.2.1 PPP 协议的特点3.2.2 PPP协议的帧格式3.2.3 PPP 协议的工作状态 3.3 使用广播信…...
稀土抑烟剂——为汽车火灾安全增添防线
一、稀土抑烟剂的基本概念 稀土抑烟剂是一类基于稀土元素(如稀土氧化物和稀土金属化合物)开发的高效阻燃材料。它可以显著提高汽车内饰材料的阻燃性能,减少火灾发生时有毒气体和烟雾的产生。稀土抑烟剂不仅能提升火灾时的安全性,…...
Qt Pro、Pri、Prf
一、概述 1、在Qt中,通常使用.pro(project)、pri(private include)、prf(project file)三种文件扩展名来组织项目。对于模块化编程,Qt提供了Pro和Pri,Pro管理项目,Pri管理模块。 2、pro文件是Qt项目的核心文件,包含了…...
基于AIOHTTP、Websocket和Vue3一步步实现web部署平台,无延迟控制台输出,接近原生SSH连接
背景:笔者是一名Javaer,但是最近因为某些原因迷上了Python和它的Asyncio,至于什么原因?请往下看。在着迷”犯浑“的过程中,也接触到了一些高并发高性能的组件,通过简单的学习和了解,aiohttp这个…...
如何在MacOS上查看edge/chrome的扩展源码
步骤 进入管理扩展页面点击详细信息复制对应id在命令行键入 open ~/Library/Application Support/Microsoft Edge/Default/Extensions/${你刚刚复制的id} 即可打开访达中对应的更目录 注意 由于原生命令行无法直接处理空格 ,所以需要加转义符\,即:open ~/Librar…...
【xdoj-离散线上练习H】T234(C++)
解题心得: 写递归函数的时候,首先写终止条件,这有助于对整个递归函数的把握。 题目:输入集合A和B,输出A到B上的所有函数。 问题描述 给定非空数字集合A和B,求出集合A到集合B上的所有函数。 输入格式 第一行…...
Docker Desktop Windows 安装
一、先下载Docker desktop WIndows 下载地址 二、安装 安装超简单 一路 下一步 三、安装之后,桌面会出现一个 小蓝鲸图标,打开它 》更新至最新版本,不然小蓝鲸打开,一会就退出了。 》wsl --update (这个有时比较慢…...
springCloud-2021.0.9 之 GateWay 示例
文章目录 前言springCloud-2021.0.9 之 GateWay 示例1. GateWay 官网2. GateWay 三个关键名称3. GateWay 工作原理的高级概述4. 示例4.1. POM4.2. 启动类4.3. 过滤器4.4. 配置 5. 启动/测试 前言 如果您觉得有用的话,记得给博主点个赞,评论,收…...
JDK8 stream API用法汇总
目录 1.集合处理数据的弊端 2. Steam流式思想概述 3. Stream流的获取方式 3.1 根据Collection获取 3.1 通过Stream的of方法 4.Stream常用方法介绍 4.1 forEach 4.2 count 4.3 filter 4.4 limit 4.5 skip 4.6 map 4.7 sorted 4.8 distinct 4.9 match 4.10 find …...
windows生成SSL的PFX格式证书
生成crt证书: 安装openssl winget install -e --id FireDaemon.OpenSSL 生成cert openssl req -x509 -newkey rsa:2048 -keyout private.key -out certificate.crt -days 365 -nodes -subj "/CN=localhost" 转换pfx openssl pkcs12 -export -out certificate.pfx…...
玩转大语言模型——使用Kiln AI可视化环境进行大语言模型微调数据合成
系列文章目录 玩转大语言模型——使用langchain和Ollama本地部署大语言模型 玩转大语言模型——三分钟教你用langchain提示词工程获得猫娘女友 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型—…...
2025 西湖论剑wp
web Rank-l 打开题目环境: 发现一个输入框,看一下他是用上面语言写的 发现是python,很容易想到ssti 密码随便输,发现没有回显 但是输入其他字符会报错 确定为ssti注入 开始构造payload, {{(lipsum|attr(‘global…...
FPGA 28 ,基于 Vivado Verilog 的呼吸灯效果设计与实现( 使用 Vivado Verilog 实现呼吸灯效果 )
目录 前言 一. 设计流程 1.1 需求分析 1.2 方案设计 1.3 PWM解析 二. 实现流程 2.1 确定时间单位和精度 2.2 定义参数和寄存器 2.3 实现计数器逻辑 2.4 控制 LED 状态 三. 整体流程 3.1 全部代码 3.2 代码逻辑 1. 参数定义 2. 分级计数 3. 状态切换 4. LED 输…...
单片机简介
一、单片机简介 电脑和单片机性能对比 二、单片机发展历程 三、CISC VS RISC...
C++ 设计模式-桥接模式
C桥接模式的经典示例,包含测试代码: #include <iostream> #include <string>// 实现化接口 class Device { public:virtual ~Device() default;virtual bool isEnabled() const 0;virtual void enable() 0;virtual void disable() 0;vi…...
不小心删除服务[null]后,git bash出现错误
不小心删除服务[null]后,git bash出现错误,如何解决? 错误描述:打开 git bash、msys2都会出现错误「bash: /dev/null: No such device or address」 问题定位: 1.使用搜索引擎搜索「bash: /dev/null: No such device o…...
16.React学习笔记.React更新机制
一. 发生更新的时机以及顺序## image.png props/state改变render函数重新执行产生新的VDOM树新旧DOM树进行diff计算出差异进行更新更新到真实的DOM 二. React更新流程## React将最好的O(n^3)的tree比较算法优化为O(n)。 同层节点之间相互比较,不跨节点。不同类型的节…...
【Elasticsearch】词干提取(Stemming)
词干提取是将一个词还原为其词根形式的过程。这确保了在搜索过程中,一个词的不同变体能够匹配到彼此。 例如,walking(行走)和walked(走过)可以被还原到同一个词根walk(走)。一旦被还…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...
