docker nginx imclude

1 http 块配置

Nginx 的配置分为多个块,其中 http 块是其中的主要部分,包含了 http 的相关配置。

http 块主要可以设置以下参数:

  • include:可以引入其他配置文件。例如,include /etc/nginx/mime.types; 表示引入了 /etc/nginx/mime.types 文件,其中包含了支持的文件类型。
  • default_type: 指定默认的Content-Type,当请求的资源没有明确指定Content-Type时,将使用该默认类型。
  • log_format: 定义日志格式,可以自定义日志输出的格式,可以使用预定义的变量来包含特定信息,例如$remote_addr表示客户端IP地址,$request表示请求内容,等等。
  • access_log: 配置访问日志的路径和格式。可以指定日志输出到文件,也可以将日志重定向到标准输出流。
  • error_log: 配置错误日志的路径和日志级别。可以指定日志输出到文件,也可以将日志重定向到标准错误流。
  • sendfile: 是否开启sendfile指令。当该指令开启时,nginx会尝试使用sendfile系统调用来直接传输文件,提高文件传输效率。
  • tcp_nopush: 开启后,允许发送TCP_NODELAY选项来减少网络传输延迟。
  • keepalive_timeout: 配置HTTP keep-alive连接的超时时间。如果一个客户端在这个时间内没有发送新的请求,连接将被关闭。
  • gzip: 配置gzip压缩。开启后,nginx会对响应的内容进行gzip压缩,减少传输数据量,提高性能。
  • server: 用于配置一个虚拟主机(Server Block),包含了服务器的监听端口、域名、请求处理等配置。一个http块可以包含多个server块,用于配置多个虚拟主机。
  • location: 用于配置请求处理的规则。location块可以根据URL路径或正则表达式来匹配请求,并指定相应的处理逻辑,例如反向代理、重定向、文件处理等。
  • upstream: 配置代理服务器的集群。upstream指令用于定义一组后端服务器,并可以指定负载均衡算法来分配请求。

2 http - server 块配置

在 Nginx 的 http 配置中,可以包含多个 server 配置。如下:

http {# server块1server {# 该server块的配置}# server块2server {# 该server块的配置}
}

其中,server 块的主要参数包含:

  • listen: 配置服务器监听的端口号和IP地址。可以通过listen指令指定多个端口号和IP地址,比如listen 80;表示监听80端口,默认监听所有可用IP地址。
  • server_name: 配置服务器的域名或IP地址。可以配置多个域名,用空格隔开。当请求的Host头部与server_name中的某个域名匹配时,该server块将会处理该请求。
  • add_header: 用于设置响应头信息。
  • location: 用于配置请求处理的规则。location块可以根据URL路径或正则表达式来匹配请求,并指定相应的处理逻辑,例如反向代理、重定向、文件处理等。
  • access_log和error_log: 配置访问日志和错误日志的路径和格式。
  • try_files: 配置文件搜索顺序。当请求的文件不存在时,可以通过try_files指令指定多个备用文件,服务器会按照指定的顺序查找并返回第一个存在的文件。
  • gzip: 配置gzip压缩。开启后,nginx会对响应的内容进行gzip压缩,减少传输数据量,提高性能。

# 定义一个HTTP服务器块,监听80端口,并且同时监听IPv4和IPv6地址的80端口
server {listen       80;listen  [::]:80;server_name  localhost;# 注释掉以下access_log配置,表示不记录访问日志#access_log  /var/log/nginx/host.access.log  main;# 配置根目录和默认的索引文件location / {root   /usr/share/nginx/html;index  index.html index.htm;}# 注释掉以下error_page配置,表示不自定义错误页#error_page  404              /404.html;# 配置5xx错误码的错误页error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}
}

该配置定义了一个名为 localhost 的 server,监听本机 80 端口。

3 http - server - location 配置

location 配置是Nginx中用来匹配请求URI(Uniform Resource Identifier)并指定如何处理请求的指令。在Nginx配置文件中,location 块用于根据不同的 URI 路径来定义不同的行为,如代理请求、重定向、设置缓存等。

配置类型

location 块有不同的匹配类型:

  • 普通匹配:使用前缀匹配或完全匹配来匹配请求URI。
    例如 location /example:匹配以/example开头的URI路径。
  • =:精准匹配。
    例如 location = /path/to/resource,只有当请求的URI完全等于 /path/to/resource 时,该 location 块才会生效。
  • ~:正则表达式匹配。
    例如 location ~ ^/images/.*\.jpg$:匹配以 /images/ 开头且以 .jpg 结尾的URI路径。
  • ~*:不区分大小写的正则表达式匹配。
    例如 location ~* \.jpg$:会匹配以 .jpg 结尾的URI,不区分大小写。
  • ^~:优先匹配。
    例如 location ^~ /static/:匹配以 /static/ 开头的URI路径,该匹配的优先级高于其他匹配。

配置块参数

location 配置块中可以配置一些参数,常见的如下:

  • root:指定location块的根目录,用于确定请求资源的实际文件路径。例如:root /usr/share/nginx/html;
  • alias:类似于root,但是可以将URI路径替换为指定的路径,不包括location路径。例如:alias /path/to/files;
  • try_files:定义尝试查找文件的顺序,用于处理静态文件请求。例如:try_files $uri $uri/ /index.html;
  • proxy_pass:将请求代理到指定的后端服务。例如:proxy_pass http://backend_server;
  • rewrite:重写URI,可用于重定向或修改请求URI。例如:rewrite ^/oldpath/(.*)$ /newpath/$1 permanent;
  • auth_basic:启用基本的HTTP身份验证。例如:auth_basic "Restricted Area";
  • if:条件判断,根据条件执行不同的指令。注意if指令有一些限制和陷阱,建议谨慎使用。
  • limit_rate:限制请求速率,用于限制客户端访问速度。例如:limit_rate 100k;
  • expires:设置缓存过期时间,用于控制静态资源的缓存时间。例如:expires 1d;
  • add_header:添加自定义HTTP响应头。例如:add_header X-MyHeader "My Custom Header";
  • proxy_set_header:设置代理请求头。例如:proxy_set_header X-Real-IP $remote_addr;
  • proxy_redirect:修改代理请求的重定向头。例如:proxy_redirect off;
  • proxy_pass_header:设置代理响应的头信息。例如:proxy_pass_header Server;

下面是一个简单的Nginx配置示例:

# 定义一个HTTP服务器块,监听80端口,并且设置主机名为example.com
server {listen 80;              # 监听80端口server_name example.com; # 设置主机名为example.com# 处理请求根路径的配置location / {root /usr/share/nginx/html; # 设置根目录为/usr/share/nginx/htmlindex index.html;           # 设置默认的索引文件为index.html}# 处理以/images/开头的请求路径location /images/ {alias /var/www/images/;     # 将URI路径替换为/var/www/images/}# 处理以/api/开头且以.json结尾的请求路径location ~ ^/api/.*\.json$ {proxy_pass http://backend_server; # 将请求代理到后端服务器backend_server}
}

4 http - server - upstream 配置

upstream 块用于定义一组后端服务器,用于负载均衡或代理请求。
例如:

upstream my_backend {server backend_server1:8000;   # 定义第一个后端服务器,格式为 server [IP或域名]:端口server backend_server2:8000;   # 定义第二个后端服务器,可以配置多个服务器server unix:/tmp/backend.sock; # 也可以使用Unix Socket代替IP和端口weight=1;                      # 设置服务器的权重,默认为1,负载均衡时会根据权重分配请求max_fails=3;                   # 设置请求失败次数的阈值,默认为1,超过阈值后服务器被认为不可用fail_timeout=10s;              # 设置服务器的失败超时时间,默认为10秒backup;                        # 设置服务器为备份服务器,在其他服务器不可用时使用down;                          # 设置服务器为暂时不可用状态,不会分配请求给该服务器
}

在 upstream 块中,可以配置多个后端服务器,Nginx 会根据负载均衡算法将请求分发给这些后端服务器。
需要注意的是,如果是在 Docker 中运行的 Nginx,则这里的 server 字段可以配置为 容器名称:端口号,如 ixiaoniu:8080

在定义了 upstream 块后,便可以在 location 块中通过 proxy_pass 指令将请求代理到定义的 upstream 块中的后端服务器:

location / {proxy_pass http://my_backend; # 将请求代理到名为 my_backend 的 upstream 块中定义的后端服务器}

3. 一些常用命令

  • docker exec -it nginx bash:进入在 Docker 中运行的 Nginx 容器命令行。
  • nginx -v:显示 Nginx 版本。
  • nginx -t:测试 Nginx 配置文件是否有错误。
  • nginx -s reload:重新加载配置。

===========================

自己的案例:

1. 目录结构

[root@k8s-worker07-59 nginx]# pwd
/opt/nginx
[root@k8s-worker07-59 nginx]# tree
.
├── back
│   ├── conf.d
│   │   └── default.conf
│   └── nginx.conf
├── conf.d
│   └── server
│       ├── jettech
│       │   ├── jettech-server.conf
│       │   └── location
│       │       └── index.conf
│       └── nexus
│           ├── location
│           │   └── index.conf
│           └── nexus-server.conf
├── logs
│   ├── access.log
│   └── error.log
└── nginx.conf9 directories, 9 files

2. 配置文件

[root@k8s-worker07-59 nginx]# ls
back  conf.d  logs  nginx.conf[root@k8s-worker07-59 nginx]# cat nginx.conf 
user  root;
worker_processes  auto;
error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;
events {worker_connections  10240;
}
http {include       /etc/nginx/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/server/*/*.conf;include conf.d/server/*/*.conf;
}[root@k8s-worker07-59 nginx]# ls conf.d/server/jettech/
jettech-server.conf  location
[root@k8s-worker07-59 nginx]# cat conf.d/server/jettech/jettech-server.conf 
server {listen       80;server_name  localhost;error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}#include /etc/nginx/conf.d/server/jettech/location/*.conf;include conf.d/server/jettech/location/*.conf;
}[root@k8s-worker07-59 nginx]# cat conf.d/server/jettech/location/index.conf 
location / {root   /usr/share/nginx/html;index  index.html index.htm;
}

[root@k8s-worker07-59 nginx]# docker run --name wubo --privileged=true  -p 9000:80 -p 9001:8080 -p 9002:8081  -it  -v /opt/nginx/conf.d:/etc/nginx/conf.d -v /opt/nginx/nginx.conf:/etc/nginx/nginx.conf -v /opt/nginx/logs:/var/log/nginx -v /etc/localtime:/etc/localtime  -d harbor.jettech.com/jettechtools/nginx:1.21.4

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

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

相关文章

【C++11新特性】范围for循环

C11引入了范围for循环,它是一种更简洁和易用的循环语法,用于遍历数组、容器类(例如 std::vector、std::list 等)或支持迭代器的类型。 范围for循环遍历数组的示例 int arr[] {1, 2, 3, 4, 5};for (int num : arr) {std::cout &…

Blender动画导入Three.js

你是否在把 Blender 动画导入你的 ThreeJS 游戏(或项目)中工作时遇到问题? 您的 .glb (glTF) 文件是否正在加载,但没有显示任何内容? 你的骨骼没有正确克隆吗? 如果是这样,请阅读我如何使用 SkeletonUtils.js 解决此问题 1、前提条件 你正在使用 Blender 3.1+(此版本…

QT配合CSS隐藏按钮

第一种方法 在Qt的CSS样式表中,使用 visibility 属性来隐藏按钮。设置 visibility 为 hidden 不可见,而设置为 visible 则可见。 隐藏所有 QPushButton QPushButton {visibility: hidden; }隐藏特定的按钮,用按钮的名称或样式类进行定位就…

mysql 性能排查

mysql 下常见遇到的问题有,mysql连接池耗尽,死锁、慢查、未提交的事务。等等我们可能需要看;我们想要查看的可能有 1.当前连接池连接了哪些客户端,进行了哪些操作 2.当前造成死锁的语句有哪些,是哪个客户端上的&#x…

JS常用数据类型转换(数字型和字符串型之间转换)

提供了5中基本数据类型:数字 number 字符串 string 布尔 boolean 空值 null 未定义的 undefined 常用的是数字型和字符串型之间的转换,常用的转换方法如下: 1 数字型转换成字符串型 a) 使用String()方法…

开题答辩稿

各位老师好,我是开题答辩人,我做的开题报告的题目是《》,我的论文指导老师是老师。 -------------------------------------------------------------------------------------- 我将从一下几个方面对我的开题进行介绍 ------------------…

算法通关第十三关-青铜挑战数学基础问题

数组元素积的符号 描述 : 已知函数 signFunc(x) 将会根据 x 的正负返回特定值: 如果 x 是正数,返回 1 。如果 x 是负数,返回 -1 。如果 x 是等于 0 ,返回 0 。 给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的…

vue3+ts 全局函数和变量的使用

<template><div>{{ $env }}<br />{{ $filters.format("的飞机") }}</div> </template><script setup lang"ts"> import { getCurrentInstance } from "vue"; const app getCurrentInstance(); console.log…

07-学成在线修改/查询课程的基本信息和营销信息

修改/查询单个课程信息 界面原型 第一步: 用户进入课程列表查询页面,点击编辑按钮编辑课程的相关信息 第二步: 进入编辑界面显示出当前编辑课程的信息,其中课程营销信息不是必填项,修改成功后会自动进入课程计划编辑页面 查询课程信息 请求/响应数据模型 使用Http Client测…

11月28日作业

提示并输入一个字符串&#xff0c;统计该字符中大写&#xff0c;小写字母个数&#xff0c;数字个数&#xff0c;空格个数以及其他字符个数&#xff0c;要求使用C风格字符串完成 #include <iostream>using namespace std;int main() {string str;int A0,a0,num0,backspac…

基于MBC调制方法的准Z源三相逆变器Simulink建模与仿真

摘 要 与传统&#xff3a;源逆变器相比&#xff0c;准&#xff3a;源逆变器具有电容电压应力低的优点。但是基于简单升压调制策略的准&#xff3a;源逆变器存在开关器件电压应力大和开关频率高的缺陷。将SPWM调制策略应用于准&#xff3a;源逆变器&#xff0c;并在不产生电流纹…

UDS 相关时间参数

文章目录 UDS 全部时间参数UDS 应用层诊断时间参数1、P2 Client P2 Server P2* Client P2* Server 图例2、S3 Client S3 Server 图例 UDS CNA-TP网络层时间参数1、N_As/N_Ar 图例2、N_Bs 图例3、 N_Br 图例4、N_Cs 图例N_Cr 图例 UDS 网络层流控制时间参数 UDS 全部时间参数 UD…

【Qt之QSqlTableModel】介绍及使用

【Qt之QSqlTableModel】介绍及使用 描述常用方法槽函数信号示例 描述 QSqlTableModel类为单个数据库表提供可编辑的数据模型。 QSqlTableModel是一个高级接口&#xff0c;用于从单个表中读写数据库记录。 它建立在较低级别的QSqlQuery之上&#xff0c;可用于向QTableView等视…

智安网络|探索云安全合规要求:等保2.0时代的新趋势解析

随着信息技术的不断发展和应用的广泛普及&#xff0c;信息安全问题日益凸显&#xff0c;特别是在云计算时代&#xff0c;企业对于云平台的安全保障需求更为迫切。等级保护&#xff08;等保&#xff09;作为我国信息安全的基本要求&#xff0c;已经进入了2.0时代&#xff0c;对于…

TS-函数

函数类型的定义 一般函数需要定义它的参数类型和返回值类型作为回调函数(函数类型表达式) function fn(cb: (msg: string) >void) {}可以作为对象调用的函数&#xff08;调用签名&#xff09; type DescribeFunction {msg: string(n: number): void }作为构造函数&#…

1087 All Roads Lead to Rome(最短路求最大权值,最短路路径条数,节点个数,回溯路径)

&#xff08;这题基本上把最短路能求的都求了个遍&#xff0c;除了麻烦一点&#xff0c;难度其实还好&#xff09; &#xff08;卡题原因&#xff1a;dijks漏了对路径条数的初始化。&#xff09; #include<bits/stdc.h> using namespace std; #define int long long i…

深入Android S (12.0) 探索Framework之输入系统IMS的构成与启动

文章目录 前言一、输入系统的基本组成部分二、输入系统相关源码分析1、IMS 构建1.1、SystemServer # startOtherServices()1.2、InputManagerService1.3、NativeInputManager # nativeInit()1.4、NativeInputManager1.5、InputManager1.6、InputDispatcher1.7、InputReader1.8、…

Filament引擎分析--command抽象设备API

1. 前言 Filament中使用了FrameGraph来管理渲染管线&#xff0c;需要准备两点&#xff1a; 设备接口抽象&#xff1a;设备API抽象为Command资源抽象&#xff1a;使用虚拟资源&#xff0c;在实际用到时再创建&#xff0c;方便剔除无用资源 下面就围绕Filament中设备API抽象为…

网络安全小白自学

一、网络安全应该怎么学&#xff1f; 1.计算机基础需要过关 这一步跟网安关系暂时不大&#xff0c;是进入it行业每个人都必须掌握的基础能力。 计算机网络计算机操作系统算法与数据架构数据库 Tips:不用非要钻研至非常精通&#xff0c;可以与学习其他课程同步进行。 2.渗透技…

2015年五一杯数学建模C题生态文明建设评价问题解题全过程文档及程序

2015年五一杯数学建模 C题 生态文明建设评价问题 原题再现 随着我国经济的迅速发展&#xff0c;生态文明越来越重要&#xff0c;生态文明建设被提到了一个前所未有的高度。党的十八大报告明确提出要大力推进生态文明建设&#xff0c;报告指出“建设生态文明&#xff0c;是关系…