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 适用于访问路径和静态资源路径不一致的场景。使用负载均衡配置配置,可以更加合理的使用服务器的资源,提高服务可用性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/18844.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python+appium实现自动化测试

目录 一、工具与环境准备 二、开始测试 1、插上手机,打开usb调试,选中文件传输,我这里用华为手机为例 2、启动Appium Server GUI​编辑 3、启动 Inspector Session 4、录制脚本 使用Python和Appium进行自动化测试是一种常见的移动应用…

DeepSeek正重构具身大模型和人形机器人赛道!

中国人工智能公司DeepSeek(深度求索)以“低成本、高效率、强开放”的研发范式横空出世,火遍并震撼全球科技圈;DeepSeek展现出来的核心竞争力,除了低成本及推理能力,更重要的是开源模型能力追赶上了最新的闭…

Facebook精准获客:外贸企业如何通过社群营销将产品推广到海外

作为全球用户量超40亿的社交平台,Facebook已成为外贸企业拓展海外市场的重要渠道。本文将系统解析基于Facebook平台的高效获客策略,重点针对手机壳等消费电子品类,提供可复制的精准客户开发方案,并且可以利用AI社媒引流王工具进行…

尚硅谷课程【笔记】——大数据之Hadoop【一】

课程视频链接:尚硅谷Hadoop3.x教程 一、大数据概论 1)大数据概念 大数据(Big Data):指无法再一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发…

JMeter工具介绍、元件和组件的介绍

Jmeter功能概要 JDK常用文件目录介绍 Bin目录:存放可执行文件和配置文件 Docs目录:是Jmeter的API文档,用于开发扩展组件 printable_docs目录:用户帮助手册 lib目录:存放JMeter依赖的jar包和用户扩展所依赖的Jar包…

【云安全】云原生- K8S kubeconfig 文件泄露

什么是 kubeconfig 文件? kubeconfig 文件是 Kubernetes 的配置文件,用于存储集群的访问凭证、API Server 的地址和认证信息,允许用户和 kubectl 等工具与 Kubernetes 集群进行交互。它通常包含多个集群的配置,支持通过上下文&am…

springboot整合mybatis-plus(保姆教学) 及搭建项目

一、Spring整合MyBatis (1)将MyBatis的DataSource交给Spring IoC容器创建并管理,使用第三方数据库连接池(Druid,C3P0等)代替MyBatis内置的数据库连接池 (2)将MyBatis的SqlSessionFactory交给Spring IoC容器创建并管理,使用spring-mybatis整…

数据结构6

一、哈希散列--通讯录查找 #include "hash.h" #include <stdio.h> #include <stdlib.h> #include <string.h>//int *a[10];int hash_function(char key) {if (key > a && key < z){return key - a;}else if (key > A && …

Java 大视界 -- 全球数据治理格局下 Java 大数据的发展路径(89)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

基于CanMV IDE 开发软件对K210图像识别模块的开发

简介 CanMV IDE 是一款专为 K210 芯片设计的图形识别 Python 软件&#xff0c;它提供了强大的功能&#xff0c;帮助开发者轻松实现基于 K210 芯片的图形识别应用。无论你是初学者还是经验丰富的开发者&#xff0c;CanMV IDE 都能为你提供便捷的开发环境和丰富的资源。 硬件资…

Unity学习part3

此为b站视频【【Unity教程】零基础带你从小白到超神】 https://www.bilibili.com/video/BV1gQ4y1e7SS/?p55&share_sourcecopy_web&vd_source6e7a3cbb802eb986578ad26fae1eeaab的笔记 1、反向动力学 打开ik处理 public class PlayerMoveController : MonoBehaviour {…

STM32——HAL库开发笔记19(串口中断接收实验)(参考来源:b站铁头山羊)

本实验&#xff0c;我们以中断的方式使得串口发送数据控制LED的闪烁速度&#xff0c;发送1&#xff0c;慢闪&#xff1b;发送2&#xff0c;速度正常&#xff1b;发送3&#xff0c;快闪。 一、电路连接图 二、实现思路&CubeMx配置 1、实现控制LED的闪烁速度 uint32_t bli…

Golang关于结构体组合赋值的问题

现在有一个结构体&#xff0c;其中一个属性组合了另外一个结构体&#xff0c;如下所示&#xff1a; type User struct {Id int64Name stringAge int64UserInfo }type UserInfo struct {Phone stringAddress string }如果要给 User 结构体的 Phone 和 Address 赋值的话&am…

更高效实用 vscode 的常用设置

VSCode 可以说是文本编辑神器, 不止程序员使用, 普通人用其作为文本编辑工具, 更是效率翻倍. 这里分享博主对于 VSCode 的好用设置, 让 VSCode 如虎添翼 进入设置 首先进入设置界面, 后续都在这里进行配置修改 具体设置 每项配置通过搜索关键字, 来快速定位配置项 自动保存…

深度学习之卷积神经网络框架模型搭建

卷积神经网络框架模型搭建 目录 卷积神经网络框架模型搭建1 卷积神经网络模型1.1 卷积神经网络1.2 卷积层&#xff08;Convolutional Layer&#xff09;1.2.1 输出特征图 1.3 激活函数1.4 池化层&#xff08;Pooling Layer&#xff09;1.5 全连接层&#xff08;Fully Connected…

【深度强化学习】Actor-Critic 算法

本书之前的章节讲解了基于值函数的方法&#xff08;DQN&#xff09;和基于策略的方法&#xff08;REINFORCE&#xff09;&#xff0c;其中基于值函数的方法只学习一个价值函数&#xff0c;而基于策略的方法只学习一个策略函数。那么&#xff0c;一个很自然的问题是&#xff0c;…

数据结构——二叉树(2025.2.12)

目录 一、树 1.定义 &#xff08;1&#xff09;树的构成 &#xff08;2&#xff09;度 2.二叉树 &#xff08;1&#xff09;定义 &#xff08;2&#xff09;二叉树的遍历 &#xff08;3&#xff09;遍历特性 二、练习 1.二叉树 &#xff08;1&#xff09;创建二叉树…

安科瑞光伏发电防逆流解决方案——守护电网安全,提升能源效率

安科瑞 华楠 18706163979 在当今大力发展清洁能源的时代背景下&#xff0c;光伏发电作为一种可持续的能源解决方案&#xff0c; 正得到越来越广泛的应用。然而&#xff0c;光伏发电过程中出现的逆流问题&#xff0c;给电网的安全稳定 运行带来了诸多挑战。若不能有效解决&…

3、树莓派5 安装VNC查看器 开启VNC服务器

在前序文章中&#xff08; 2、树莓派5第一次开机&#xff09;&#xff0c;可以使用三种方式开机&#xff0c;其中使用网线及wifi的方式均需要使用到VNC查看器进行远程桌面控制&#xff0c;本文将介绍如何下载安装并配置及使用VNC查看器及服务器&#xff0c;对前序文章做一些补充…

牛客周赛 Round 80

前言 这场比赛是很有意思的&#xff0c;紧跟时事IG杯&#xff0c;大卞"神之举手"&#xff0c;0胜拿下比赛&#xff0c;我当时也是完整的看完三场比赛&#xff0c;在第二次说直接两次罚下的时候我真是直接暴起了&#xff0c;然后第三场当时我正在吃饭&#xff0c;看到…