Nginx详解之Nginx高级配置

Nginx详解之Nginx高级配置

  • 1、网页的状态页
  • 2、Nginx第三方模块
    • 2.1echo模块
  • 3、变量
    • 3.1内置变量
    • 3.2自定义变量
  • 4、自定义访问日志
    • 4.1 自定义访问日志的格式
    • 4.2自定义json 格式日志
  • 5、Nginx压缩功能(重要)
  • 6、https 功能
    • 6.1Nginx的HTTPS工作原理的详解
    • 6.2启用功能模块的配置过程
    • 6.3配置实例—自签名证书
  • 7、自定义图标

1、网页的状态页

基于nginx 模块 ngx_http_stub_status_module 实现,在编译安装nginx的时候需要添加编译参数
–with-http_stub_status_module,否则配置完成之后监测会是提示语法错误注意: 状态页显示的是整个服务器的状态,而非虚拟主机的状态

#配置示例:
location /nginx_status {
   #stub_status;
   auth_basic           "auth login";
   auth_basic_user_file /apps/nginx/conf/.htpasswd;
   allow 192.168.0.0/16;
   allow 127.0.0.1;
   deny all;
 }


while : ;do ab -c 1000 -n 10000 http://192.168.91.100/;sleep 1;done
#压力测试  模拟高链接

[root@localhost ~]#curl http://www.kgc.com/nginx_status 2>/dev/null  |awk '/Reading/{print  $2,$4,$6}'
#
[root@localhost ~]#curl http://用户名:密码@www.kgc.com/nginx_status 2>/dev/null  |awk '/Reading/{print  $2,$4,$6}'

#curl http://www.pc.com/status 2> /dev/null |awk '/Reading/{print $2,$4,$6}'

实际操作:

vim /apps/nginx/conf.d/pc.conf   //进入子配置文件

只需要添加    location    
location /nginx_status {
   stub_status;
}

在这里插入图片描述

浏览器访问
192.168.190.200/ngin_status

在这里插入图片描述

Active connections:
#当前处于活动状态的客户端连接数,包括连接等待空闲连接数=reading+writing+waiting accepts
#统计总值,Nginx自启动后已经接受的客户端请求的总数。 handled
#统计总值,Nginx自启动后已经处理完成的客户端请求总数,通常等于accepts,除非有因worker_connections限制等被拒绝的连接
requests
#统计总值,Nginx自启动后客户端发来的总的请求数。 Reading
#当前状态,正在读取客户端请求报文首部的连接的连接数,数值越大,说明排队现象严重,性能不足 Writing
#当前状态,正在向客户端发送响应报文过程中的连接数,数值越大,说明访问量很大 Waiting
#当前状态,正在等待客户端发出请求的空闲连接数,开启 keep-alive的情况下,这个值等于active – (reading+writing)

2、Nginx第三方模块

Nginx第三方模块就是一种可选的插件,用于扩展和增强Nginx的功能,并根据特定需求自定义其行为。

第三方模块可以添加新的指令、处理程序、变量或修改现有功能。

要使用第三方模块,您需要在编译和安装Nginx时包含相应的模块源代码,并按照模块提供的说明进行配置。

2.1echo模块

echo-nginx-module 是一个第三方的 Nginx 模块,可以解析配置文件中的 echo
指令,并执行对应的脚本或表达式,将其结果作为HTTP 响应返回给客户端

使用echo模块,可以实现:
(1) 输出纯文本:将字符串作为响应的一部分返回给客户端。
(2) 输出变量值:将 Nginx 内置变量或自定义变量的值返回给客户端。这对于显示请求头信息或动态生成内容非常有用。
(3)输出 HTTP 状态码:设置响应的 HTTP 状态码。
(4)控制请求处理流程:通过终止请求或将请求重定向到其他 URL 来控制请求的处理流程。

要使用 echo-nginx-module,需要在编译安装 Nginx 时添加该模块,或者通过第三方软件包管理工具进行安装。

#举个例子
http {
    server {
        listen 80;
        server_name example.com;

        location /hello {
            echo "Hello, World!";
        }
    }
}
当访问 `http://example.com/hello` 时,Nginx 会使用 echo 模块输出 "Hello, World!" 作为 HTTP 响应。

https://codeload.github.com/openresty/echo-nginx-module/zip/refs/heads/master
下载模块包

unzip echo-nginx-module-master.zip#解压

在这里插入图片描述

#重新编译安装 添加echo模块
cd   /data/nginx-1.18.0

./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module --add-module=/test11/echo-nginx-module-master

make -j2 && make install

在这里插入图片描述

//在配置文件中加入echo模块配置
vim /apps/nginx/conf.d/pc.conf 

location  /ip {
  default_type   text/html;
  echo "welcome, your ip addr: ";
  echo $remote_addr;
}

nginx -t
nginx -s reload 

在这里插入图片描述

其他主机curl 192.168.190.200/ip

在这里插入图片描述

3、变量

在NGINX中,变量是一种用于存储和检索HTTP请求和响应中的数据的机制。

变量可以包含请求头、请求方法、请求参数、时间戳等信息。

3.1内置变量

$remote_addr; 
//存放了客户端的地址,注意是客户端的公网IP


$proxy_add_x_forwarded_for
//此变量表示将客户端IP追加请求报文中X-Forwarded-For首部字段,多个IP之间用逗号分隔,如果请求中没有X-Forwarded-For,就使用$remote_addrthe “X-Forwarded-For” client request header field with the $remote_addr variable appended to it, separated by a comma. If the “X-Forwarded-For” field is not present in the client request header, the $proxy_add_x_forwarded_for variable is equal to the $remote_addr variable.
客户机    代理1     代理2     nginx服务器
$proxy_add_x_forwarded_for: 在代理1 上存的是  客户机的ip
$proxy_add_x_forwarded_for: 在代理2 上存的是  客户机的ip,代理1的ip            用逗号隔开
$proxy_add_x_forwarded_for: nginx  上存的是  客户机的ip,代理1的ip,代理2的ip



$args; 
//变量中存放了URL中的参数,例如:http://www.kgc.org/main/index.do?id=20190221&partner=search
//返回结果为: id=20190221&partner=search    存放的就是这个


$document_root; 
//保存了针对当前资源的请求的系统根目录,例如:/apps/nginx/html。



$document_uri;
//保存了当前请求中不包含参数的URI,注意是不包含请求的指令,比
如:http://www.kgc.org/main/index.do?id=20190221&partner=search会被定义为/main/index.do 
//返回结果为:/main/index.do


$host; 
//存放了请求的host名称


limit_rate 10240;
echo $limit_rate;
//如果nginx服务器使用limit_rate配置了显示网络速率,则会显示,如果没有设置, 则显示0


$remote_port; 
//客户端请求Nginx服务器时随机打开的端口,这是每个客户端自己的端口

$remote_user; 
//已经经过Auth Basic Module验证的用户名

$request_body_file; 
//做反向代理时发给后端服务器的本地资源的名称

$request_method; 
//请求资源的方式,GET/PUT/DELETE等

$request_filename; 
//当前请求的资源文件的磁盘路径,由root或alias指令与URI请求生成的文件绝对路径,如:/apps/nginx/html/main/index.html

$request_uri; 
//包含请求参数的原始URI,不包含主机名,相当于:$document_uri?$args,例如:/main/index.do?id=20190221&partner=search 

$scheme; 
//请求的协议,例如:http,https,ftp等

$server_protocol; 
//保存了客户端请求资源使用的协议的版本,例如:HTTP/1.0,HTTP/1.1,HTTP/2.0等

$server_addr; 
//保存了服务器的IP地址

$server_name; 
//请求的服务器的主机名

$server_port; 
//请求的服务器的端口号

$http_<name>
//name为任意请求报文首部字段,表示记录请求报文的首部字段
arbitrary request header field; the last part of a variable name is the field name converted to lower case with dashes replaced by underscores 
//用下划线代替横线
//示例: echo $http_User_Agent;  

$http_user_agent; 
//客户端浏览器的详细信息

$http_cookie; 
//客户端的cookie信息


$cookie_<name>
//name为任意请求报文首部字部cookie的key名

$http_<name>
//name为任意请求报文首部字段,表示记录请求报文的首部字段,ame的对应的首部字段名需要为小写,如果有
横线需要替换为下划线
arbitrary request header field; the last part of a variable name is the field 
name converted to lower case with dashes replaced by underscores //用下划线代替横线
//示例: 
echo $http_user_agent; 
echo $http_host;


$sent_http_<name>
//name为响应报文的首部字段,name的对应的首部字段名需要为小写,如果有横线需要替换为下划线,此变量有问题
echo $sent_http_server;



$arg_<name>
//此变量存放了URL中的指定参数,name为请求url中指定的参数
//对比 变量  $arg  是全部, 如果 要id   如下
echo $arg_id;

例子:

vim /apps/nginx/conf.d/computer.conf
#添加以下内容
location /main {
        index index.html;
        default_type text/html;
        echo "hello world,main-->";
        echo $remote_addr;
        echo $args;
    	echo $arg_user
        echo $document_root;
        echo $document_uri;
        echo $host;
        echo $http_user_agent;
        echo $http_cookie;
        echo $request_filename;
        echo $scheme;
        echo $scheme://$host$document_uri?$args;
        }


- `index index.html;`:指定默认的索引文件为index.html,当访问/main时,如果有index.html文件,将自动显示该文件。

- `default_type text/html;`:指定默认的Content-Type为text/html,如果响应中没有特别指定Content-Type,则使用默认值。

- `echo "hello world,main-->";`:输出字符串"hello world,main-->"- `echo $remote_addr;`:输出客户端的IP地址。

- `echo $args;`:输出请求的查询参数。

- `echo $arg_user;`:输出名为user的查询参数的值。

- `echo $document_root;`:输出当前请求的根目录路径。

- `echo $document_uri;`:输出当前请求的URI。

- `echo $host;`:输出请求的主机名。

- `echo $http_user_agent;`:输出客户端使用的用户代理。

- `echo $http_cookie;`:输出请求中的Cookie。

- `echo $request_filename;`:输出当前请求的文件路径。

- `echo $scheme;`:输出请求使用的协议(http或https)。

- `echo $scheme://$host$document_uri?$args;`:输出完整的URL,包括协议、主机、路径和查询参数。
  • 进入子配置文件
vim /apps/nginx/conf.d/computer.conf

在这里插入图片描述

  • 添加以下内容
location /main {
        index index.html;
        default_type text/html;
        echo "hello world,main-->";
        echo $remote_addr;
        echo $args;
    	echo $arg_user
        echo $document_root;
        echo $document_uri;
        echo $host;
        echo $http_user_agent;
        echo $http_cookie;
        echo $request_filename;
        echo $scheme;
        echo $scheme://$host$document_uri?$args;
        }

在这里插入图片描述

  • 使用另外一台主机进行测试
curl 192.168.190.200/main

在这里插入图片描述

3.2自定义变量

假如需要自定义变量名称和值,使用指令set $variable value;

语法格式:

Syntax: set $variable value;
Default: —
Context: server, location, if

范例:

set $name kgc;
echo $name;
set $my_port $server_port;
echo $my_port;
echo "$server_name:$server_port"; #输出信息如下
[root@centos6 ~]#curl www.kgc.org/main
kgc
80
www.kgc.org:80

######################################################
实际例子:
location /test {
        set $name  kgc;
        echo $name;
        set $my_port $server_port;
        echo $my_port;
        }

在这里插入图片描述

切换到另一台主机
curl 192.168.198.200/main

在这里插入图片描述

4、自定义访问日志

自定义访问日志可以提供更灵活和定制化的日志记录方式。

1、满足特定需求:通过自定义访问日志,你可以选择记录特定的访问信息,如客户端IP地址、访问时间、请求内容、状态码、传输字节数、引用页面、用户代理等。这些信息可以根据你的需求进行自定义,以满足特定的分析、监控或统计需求。

2、减少日志量:默认情况下,Nginx 记录的访问日志较为详细,包含了大量的信息。而自定义访问日志可以让你只记录感兴趣的信息,避免产生过多的日志数据,减少磁盘空间和读写开销。

3、提高性能:自定义访问日志可以减少磁盘的写入操作,从而减小对系统性能的影响。尤其在高访问量的情况下,减少日志量可以提高系统的处理能力和响应速度。

4、日志分析与监控:自定义访问日志可以使日志数据更易于分析和监控。你可以根据自定义的格式,使用各种日志分析工具或脚本,提取有用的信息,进行访问分析、安全审计、性能优化等工作。

4.1 自定义访问日志的格式

要自定义 Nginx 的访问日志,你需要编辑 Nginx 的配置文件,并修改 http 部分的日志格式。

以下是一个简单的例子,展示了如何在 Nginx 配置文件中定义一个自定义的访问日志格式:

http {
    # 定义自定义访问日志格式
    log_format my_custom_log '$remote_addr - $remote_user [$time_local] "$request" '
                           '$status $body_bytes_sent "$http_referer" '
                           '"$http_user_agent"';

    # 配置使用自定义访问日志格式的访问日志文件
    access_log /path/to/custom_access.log my_custom_log;

    # 其他配置项...
}

在上述例子中,我们使用 `log_format` 指令定义了一个名为 `my_custom_log` 的自定义日志格式,该格式包含了 IP 地址、用户名、访问时间、请求内容、状态码、传输字节数、引用页面和用户代理等信息。

然后,在 `access_log` 指令中指定了一个自定义访问日志文件的路径 `/path/to/custom_access.log`,并且将之前定义的 `my_custom_log` 格式应用于该日志文件。

请注意,修改完配置文件之后,记得重新加载 Nginx 配置使改动生效,使用命令 `nginx -s reload` 可以实现配置文件的热重载。

4.2自定义json 格式日志

log_format access_json '{"@timestamp":"$time_iso8601",'
        '"host":"$server_addr",'
        '"clientip":"$remote_addr",'
        '"size":$body_bytes_sent,'
        '"responsetime":$request_time,'
        '"upstreamtime":"$upstream_response_time",'
        '"upstreamhost":"$upstream_addr",'  
        '"http_host":"$host",'
        '"uri":"$uri",'
        '"xff":"$http_x_forwarded_for",'
        '"referer":"$http_referer",'
        '"tcp_xff":"$proxy_protocol_addr",'
        '"http_user_agent":"$http_user_agent",'
        '"status":"$status"}';


location / {
  root /data/nginx/pc/;
  access_log logs/access.log access_json;
}
'"http_user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTMLe/101.0.4951.54 Safari/537.36",'    '"status":"304"}'
脚本
#!/usr/bin/env python3
#coding:utf-8
status_200= []
status_404= []
with open("access_json.log") as f:
    for line in f.readlines():
        line = eval(line)
        if line.get("status") == "200":
            status_200.append(line.get)
        elif line.get("status") == "404":
            status_404.append(line.get)
        else:
            print("状态码 ERROR")
        print((line.get("clientip")))
f.close()
print("状态码200的有--:",len(status_200))
print("状态码404的有--:",len(status_404))

5、Nginx压缩功能(重要)

支持对指定类型的文件进行压缩然后再传输给客户端,而且压缩还可以设置压缩比例,压缩后的文件大小将比源文件显著变小,这样有助于降低出口带宽的利用率,降低企业的IT支出,不过会占用相应的CPU资源。Nginx对文件的压缩功能是依赖于模块
ngx_http_gzip_module

官方文档:https://nginx.org/en/docs/http/ngx_http_gzip_module.html

配置指令如下:

#启用或禁用gzip压缩,默认关闭
gzip on | off; 
#压缩比由低到高从1到9,默认为1
gzip_comp_level level;
#禁用IE6 gzip功能
gzip_disable "MSIE [1-6]\."; 
#gzip压缩的最小文件,小于设置值的文件将不会压缩
gzip_min_length 1k; 
#启用压缩功能时,协议的最小版本,默认HTTP/1.1
gzip_http_version 1.0 | 1.1; 
#指定Nginx服务需要向服务器申请的缓存空间的个数和大小,平台不同,默认:32 4k或者16 8k;
gzip_buffers number size;  
#指明仅对哪些类型的资源执行压缩操作;默认为gzip_types text/html,不用显示指定,否则出错
gzip_types mime-type ...; 
#如果启用压缩,是否在响应报文首部插入“Vary: Accept-Encoding”,一般建议打开
gzip_vary on | off;
#预压缩
gzip_static on | off;


#重启nginx并进行访问测试压缩功能
[root@centos8 ~]# cp /apps/nginx/logs/access.log /data/nginx/html/pc/m.txt
[root@centos8 ~]# echo "test" > /data/nginx/html/pc/test.html #小于1k的文件测试是否
会压缩
[root@centos8 ~]# vim /apps/nginx/conf/nginx.conf
gzip on;


gzip_comp_level 5;
gzip_min_length 1k;
gzip_types text/plain application/javascript application/x-javascript text/css 
application/xml text/javascript application/x-httpd-php image/gif image/png;   
gzip_vary on;
#重启Nginx并访问测试:
[root@centos8 ~]# curl --head --compressed 192.168.91.100/test.html
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 22 Feb 2019 01:52:23 GMT
Content-Type: text/html
Last-Modified: Thu, 21 Feb 2019 10:31:18 GMT
Connection: keep-alive
Keep-Alive: timeout=65
Vary: Accept-Encoding
ETag: W/"5c6e7df6-171109"
Content-Encoding: gzip #压缩传输
#验证不压缩访问的文件大小:

实际操作

太小的文件没必要压缩,压缩说不定变大了

在这里插入图片描述

vim /apps/nginx/conf.d/computer.conf 
//进入子配置文件

//写入以下内容
 server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/html;
        gzip on;
        gzip_comp_level 9;
        gzip_min_length 1k;
        gzip_vary on;

在这里插入图片描述

浏览器输入 192.168.190.200/111.txt

在这里插入图片描述

6、https 功能

Web网站的登录页面都是使用https加密传输的,加密数据以保障数据的安全,HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议,HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。

nginx 的https 功能基于模块ngx_http_ssl_module实现,因此如果是编译安装的nginx要使用参数ngx_http_ssl_module开启ssl功能,但是作为nginx的核心功能,yum安装的nginx默认就是开启的,编译安装的nginx需要指定编译参数–with-http_ssl_module开启
官方文档;
https://nginx.org/en/docs/http/ngx_http_ssl_module.html

6.1Nginx的HTTPS工作原理的详解

(1)客户端发送HTTPS请求:客户端(例如Web浏览器)通过HTTPS协议向Nginx服务器发送加密的HTTP请求。默认情况下,HTTPS使用443端口进行通信。

(2)服务器证书握手:Nginx服务器接收到HTTPS请求后,会向客户端发送已经配置好的SSL证书。该证书包含了服务器的公钥以及其他相关信息,例如服务器的域名。

(3)客户端验证证书:客户端接收到服务器发送的证书后,会使用预置的受信任证书颁发机构(CA)根证书列表来验证详细的服务器证书链。客户端会检查证书是否由受信任的CA签发,并验证证书的有效性和真实性。如果证书通过验证,客户端可以确认服务器的身份。

(4)密钥交换:如果服务器的证书被成功验证,客户端会生成一个随机的对称密钥,称为“会话密钥”。然后,客户端使用服务器的公钥来加密该会话密钥,并将其发送给服务器。

(5)数据加密:Nginx服务器接收到客户端发送的加密的会话密钥后,使用服务器的私钥解密该会话密钥。此后,Nginx服务器和客户端使用会话密钥来进行对称加密和解密,以加密和解密数据的传输。

(6)安全数据传输:一旦会话密钥被交换并使用,Nginx服务器和客户端之间的通信将通过使用会话密钥进行加密和解密来保证安全性。所有通过HTTPS协议传输的数据,包括HTTP请求和响应内容,都将被加密。

客户端和服务器之间的加密通道建立后,数据在传输过程中将经过加密,从而提供了更高的安全性。

6.2启用功能模块的配置过程

  • Nginx的HTTPS功能通过ngx_http_ssl_module模块来实现的。

  • ngx_http_ssl_module模块为Nginx添加了对SSL/TLS协议的支持,使其能够提供HTTPS服务。

  • ngx_http_ssl_module模块提供了一组配置项,用于指定SSL证书、私钥、加密算法、协议版本以及其他与SSL/TLS相关的设置。

配置步骤:

  • 1、获取SSL证书和私钥:从证书颁发机构(CA)或自签名证书颁发机构获取有效的SSL证书和对应的私钥文件。证书用于验证服务器的身份,私钥用于解密SSL连接。
  • 2、配置Nginx:编辑主配置文件nginx.conf
ssl_certificate:指定SSL证书文件的路径。

ssl_certificate_key:指定SSL私钥文件的路径。

ssl_protocols:指定支持的TLS协议版本,例如TLSv1.2、TLSv1.3。

ssl_ciphers:指定加密算法套件,例如AES128-GCM-SHA256、ECDHE-RSA-AES256-GCM-SHA384。

其他可选的SSL配置项:ssl_prefer_server_ciphers、ssl_session_timeout等。
  • eg:
server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private/key.key;

    # SSL配置项
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
}
  • 3、重启Nginx:保存配置文件,并重新加载或重启Nginx服务。
nginx -s reload

6.3配置实例—自签名证书

在这里插入图片描述

  • 脚本内容
CA_SUBJECT="/O=kgc/CN=ca.kgc.com"
SUBJECT="/C=CN/ST=js/L=nj/O=kgc/CN=www.kgc.com"
SERIAL=34
EXPIRE=202002
FILE=kgc.com

openssl req  -x509 -newkey rsa:2048 -subj $CA_SUBJECT -keyout ca.key -nodes -days 202002 -out ca.crt

openssl req -newkey rsa:2048 -nodes -keyout ${FILE}.key  -subj $SUBJECT -out ${FILE}.csr

openssl x509 -req -in ${FILE}.csr  -CA ca.crt -CAkey ca.key -set_serial $SERIAL  -days $EXPIRE -out ${FILE}.crt

chmod 600 ${FILE}.key ca.key

在这里插入图片描述
在这里插入图片描述

server {
 listen 80;
 listen 443 ssl;
 ssl_certificate /ky31/www.kgc.com.crt;
 ssl_certificate_key /ky31/www.kgc.com.key;
 ssl_session_cache shared:sslcache:20m;
 ssl_session_timeout 10m;

在这里插入图片描述
在这里插入图片描述

7、自定义图标

favicon.ico 文件是浏览器收藏网址时显示的图标。

当客户端使用浏览器问页面时,浏览器会自己主动发起请求获取页面的favicon.ico文件。
当浏览器请求的favicon.ico文件不存在时,服务器会记录404日志,而浏览器会显示404报错。

#方法一:服务器不记录访问日志:
location = /favicon.ico {
   log_not_found off;
   access_log off;
}
#方法二:将图标保存到指定目录访问:
#location ~ ^/favicon\.ico$ {
location = /favicon.ico {
     root   /data/nginx/html/pc/images;
     expires 365d;  #设置文件过期时间
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

配置DNS服务的正反向解析

正向解析 安装DNS服务 2.在服务器端 编辑区域配置文件&#xff0c;选择一个解析模版进行修改---------/etc/named.rfc1912.zones 修改第一第三行 编辑数据配置文件&#xff0c;使用cp -a命令完全拷贝一份正向解析模版&#xff08;named.localhost&#xff09;&#xff0c;在…

微服务项目容器编排docker-compose.yml、Dockerfile文件模板、相关配置文件、shell脚本

nacos Dockerfile&#xff08;不需要特殊处理&#xff0c;使用docker conpose可以不写&#xff09; # 基础镜像 FROM nacos/nacos-server # author MAINTAINER jianglifeng<jlifengfoxmail.com> # 复制conf文件到路径 COPY ./conf/application.properties /home/nacos/c…

Unity Canvas动画不显示的问题

问题描述: 我通过角色创建了一个walk的动画&#xff0c;当我把这个动画给到Canvas里面的一个image上&#xff0c;这个动画就不能正常播放了&#xff0c;经过一系列的查看我才发现&#xff0c;canvas里面动画播放和非canvas得动画播放&#xff0c;他们的动画参数是不一样的。一个…

项目详细描述

目录、 一、SOC智能游戏机&#xff08;集创赛-西南赛区三等奖&#xff09; 二、AXI2AHB Bridge 三、基于FPGA智能导盲拐杖&#xff08;FPGA竞赛全国二等奖&#xff09; 三、基于FPGA的倾角监测系统 四、图像压缩核心算法 一、SOC智能游戏机&#xff08;集创赛-西南赛区三等…

Kubernetes快速进阶与实战:构建可靠的容器化应用平台

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 1. 什么是Kubernetes&am…

数据分析基础-数据可视化学习笔记03-可视化的符号与表示-图形符号学

概念 图型符号学&#xff08;Cartographic Symbolization&#xff09;是地图学领域中的一个重要概念&#xff0c;涉及到如何使用不同的符号、颜色、图案和标记来在地图上表示地理信息和数据。图型符号学旨在传达地理信息&#xff0c;使得地图能够清晰、有效地传达各种空间数据…

【PHP】PHP基本语法

1、PHP标记 当解析一个文件时&#xff0c;PHP 会寻找起始和结束标记&#xff0c;也就是 <?php 和 ?>&#xff0c;告诉 PHP 开始和停止解析二者之间的代码。此种解析方式使得 PHP 可以被嵌入到各种不同的文档中去&#xff0c;而任何起始和结束标记之外的部分都会被 PHP…

CK-GW06-E03与汇川PLC的EtherNet/IP通信

准备阶段&#xff1a; CK-GWO6-E03网关POE交换机网线汇川PLC编程软件汇川AC801-0221-U0R0型号PLC 1.打开汇川PLC编程软件lnoProShop(V1.6.2)SP2 新建工程&#xff0c;选择对应的PLC型号&#xff0c;编程语言选择为“结构化文本&#xff08;ST&#xff09;语言”&#xff0c;然…

python项目实战

文章 项目1&#xff1a;外星人入侵游戏项目2&#xff1a;数据可视化2.1 matplotlib2.2 csv文件格式2.3 json文件格式2.4 使用Web API2.4.1 什么是Web API?2.4.2 处理API响应 2.5 使用Pygal可视化仓库 项目3&#xff1a;Web应用程序3.1 Django入门3.1.1 建立项目3.1.2 创建应用…

00-音视频-概述

有很多场合会使用的音视频&#xff0c;比如安防、视频闸机、影音播放器、视频通话&#xff0c;短视频等等。 从摄像头采集到用户观看&#xff0c;这中间涉及到了很多技术。 用户一般观看的高清视频1080P30帧。若按24位RGB对视频进行存储&#xff0c;一个60分钟视频所占空间 …

c++学习之vector的实现

在学习实现vector之前我们会看到对于库中的vector的实现&#xff0c;这里并非使用在学习string那样的定义方式&#xff0c;而是利用迭代器&#xff0c;也就是指针来实现的&#xff0c;这在功能的实现时极大的方便了我们。 那么我们就模仿库这样的方式实现我们呢经常会用到的一些…

如何保证跨境传输的安全性?

随着互联网时代的到来&#xff0c;全球文件传输频率不断增加&#xff0c;市场经济的发展也对信息共享提出更高要求。传统电话交流已无法满足跨国企业的需求&#xff0c;企业内部诸如Web、电子邮件、企业资源计划&#xff08;ERP&#xff09;、网络电话&#xff08;VOIP&#xf…

巨人互动|游戏出海游戏出海的趋势如何

随着全球游戏市场的不断扩大和消费者需求的多元化&#xff0c;游戏出海作为游戏行业的重要战略之一&#xff0c;正面临着新的发展趋势。本文小编将讲讲游戏出海的趋势&#xff0c;探讨一下未来游戏出海的发展方向与前景。 巨人互动|游戏出海&2023国内游戏厂商加快“出海”发…

实训笔记8.25

实训笔记8.25 8.25笔记一、Flume数据采集技术1.1 Flume实现数据采集主要借助Flume的组成架构1.2 Flume采集数据的时候&#xff0c;核心是编写Flume的采集脚本xxx.conf1.2.1 脚本文件主要由五部分组成 二、Flume案例实操2.1 采集一个网络端口的数据到控制台2.1.1 分析案例的组件…

Day50|动态规划part11:188.买卖股票的最佳时机IV、123. 买卖股票的最佳时机III

188. 买卖股票的最佳时机IV leetcode链接&#xff1a;188 题「买卖股票的最佳时机 IVopen in new window」 视频链接&#xff1a;动态规划来决定最佳时机&#xff0c;至多可以买卖K次&#xff01;| LeetCode&#xff1a;188.买卖股票最佳时机4 给你一个整数数组 prices 和一…

递归算法学习——子集

目录 一&#xff0c;题目解析 二&#xff0c;例子 三&#xff0c;题目接口 四&#xff0c;解题思路以及代码 1.完全深度搜索 2.广度搜索加上深度优先搜索 五&#xff0c;相似题 1.题目 2.题目接口 3.解题代码 一&#xff0c;题目解析 给你一个整数数组 nums &#xff0c…

Acwing796.子矩阵的和

理解二维前缀和&#xff1a; #include <iostream>using namespace std;const int N 1010;int a[N][N], s[N][N];int main() {int n, m, q;cin >> n >> m >> q;for (int i 1; i < n; i)for (int j 1; j < m; j) {scanf("%d", &a…

2023高教社杯数学建模思路 - 复盘:光照强度计算的优化模型

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米&#xff0c;宽为12米&…

本地部署 CodeLlama 并在 VSCode 中使用 CodeLlama

本地部署 CodeLlama 并在 VSCode 中使用 CodeLlama 1. CodeLlama 是什么2. CodeLlama Github 地址3. 下载 CodeLlama 模型4. 部署 CodeLlama5. 在 VSCode 中使用 CodeLlama6. 使用WSGI启动服务7. 创建 start.sh 启动脚本 1. CodeLlama 是什么 Code Llama 是一个基于 Llama 2 的…

WebSocket详解以及应用

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;websocket、网络、长连接、前端☀️每日 一言&#xff1a;任何一个你不喜欢而又离不开的地方&#xff0c;任何一种你不喜欢而又无法摆脱的生活&#xff0c;都是监狱&#xff01; 一、前言 我们在…