Nginx详解 第三部分:Nginx高级配置(附配置实例)
Part 3
- 一、网页的状态页
- 二、Nginx第三方模块
- 2.1 echo 模块
- 三、变量
- 3.1 内置变量
- 3.1.1 常用内置变量
- 3.1.2 举个例子
- 3.2 自定义变量
- 四、自定义访问日志 (优化)
- 4.1 自定义访问日志的格式
- 4.2 自定义json 格式日志
- 五、Nginx压缩功能(重要)
- 六、HTTPS 功能
- 6.1 Nginx的HTTPS工作原理的详解
- 6.2 启用功能模块的配置过程
- 6.3 配置实例-----自签名证书
- 七、自定义图标
一、网页的状态页
Nginx提供了一个状态页(status page),用于查看服务器的运行状态信息。
状态页将显示当前活动连接数、接受的请求数、处理时间等信息,这些信息对于了解服务器的运行状况和进行故障排查非常有用。
基于Nginx 模块 ngx_http_stub_status_module
实现,在编译安装nginx的时候需要添加编译参数 --with-http_stub_status_module
。
状态页显示的是整个服务器的状态,而非虚拟主机的状态。
yum install -y httpd-tools
htpasswd -bc /apps/nginx/conf.d/.httpuser byyd 123456cd /apps/nginx/conf.d/vim computer.conf
#添加以下内容
location /nginx_status {auth_basic "auth login";auth_basic_user_file /apps/nginx/conf/.htpasswd;allow 192.168.0.0/24;allow 127.0.0.1;deny all;}
访问
192.168.2.100/ngin_status
Active connections:
#当前处于活动状态的客户端连接数,包括连接等待空闲连接数=reading+writing+waiting
accepts
#统计总值,Nginx自启动后已经接受的客户端请求的总数。
handled
#统计总值,Nginx自启动后已经处理完成的客户端请求总数,通常等于accepts,除非有因worker_connections限制等被拒绝的连接
requests
#统计总值,Nginx自启动后客户端发来的总的请求数。
Reading
#当前状态,正在读取客户端请求报文首部的连接的连接数,数值越大,说明排队现象严重,性能不足
Writing
#当前状态,正在向客户端发送响应报文过程中的连接数,数值越大,说明访问量很大
Waiting
#当前状态,正在等待客户端发出请求的空闲连接数,开启 keep-alive的情况下,这个值等于active – (reading+writing)
二、Nginx第三方模块
Nginx第三方模块就是一种可选的插件,用于扩展和增强Nginx的功能,并根据特定需求自定义其行为。
第三方模块可以添加新的指令、处理程序、变量或修改现有功能。
要使用第三方模块,您需要在编译和安装Nginx时包含相应的模块源代码,并按照模块提供的说明进行配置。
2.1 echo 模块
原理
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 /test11/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-mastermake -j2 && make install
#在配置文件中加入echo模块配置
vim /apps/nginx/conf.d/computer.conf location /ip {default_type text/html;echo "welcome, your ip addr: ";echo $remote_addr;
}nginx -t
nginx -s reload
换一台机器,检测模块是否成功加载
curl 192.168.2.100/ip
三、变量
在NGINX中,变量是一种用于存储和检索HTTP请求和响应中的数据的机制。
变量可以包含请求头、请求方法、请求参数、时间戳等信息。
http://nginx.org/en/docs/varindex.html
官方文档
3.1 内置变量
3.1.1 常用内置变量
当NGINX作为反向代理服务器时,它将接收到的客户端请求转发给后端服务器。为了保持请求的来源信息,NGINX可以在转发请求时设置X-Forwarded-For头部,以便后端服务器知道真实的客户端IP地址。
内置变量 | 功能 |
---|---|
$remote_addr | 客户端的地址,注意是客户端的公网IP |
$proxy_add_x_forwarded_for | 在反向代理服务器中设置X-Forwarded-For请求头 |
$args | 请求的查询参数 |
$arg_ | 输出名为的查询参数的值 |
$document_root | 当前请求的根目录路径 |
$document_uri | 当前请求的URI,不包括查询字符串部分 |
$host | 存放了请求的主机名 |
limit_rate | 如果nginx服务器使用limit_rate配置了显示网络速率,则会显示,如果没有设置, 则显示0 |
$remote_port | 客户端请求Nginx服务器时随机打开的端口,这是每个客户端自己的端口 |
$remote_user | 已经经过Auth Basic Module验证的用户名 |
$request_body_file | 做反向代理时发给后端服务器的本地资源的名称 |
$request_method | 请求资源的方式,GET/PUT/DELETE等 |
$request_filename | 当前请求的文件路径 |
$request_uri | 包含请求参数的原始URI,不包含主机名 |
$scheme | 请求使用的协议(http或https) |
$server_protocol | 保存了客户端请求资源使用的协议的版本 |
$server_addr | 保存了服务器的IP地址 |
$server_name | 请求的服务器的主机名 |
$server_port | 请求的服务器的端口号 |
$http_ | 记录请求报文的首部字段 |
$http_user_agent | 客户端使用的用户代理 |
$http_cookie | 请求中的Cookie |
$cookie_ | name为任意请求报文首部字部cookie的key名 |
$sent_http_ | name为响应报文的首部字段 |
3.1.2 举个例子
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_userecho $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,包括协议、主机、路径和查询参数。
切换到另一台主机进行测试
curl 192.168.2.100/main
curl '192.168.2.100/main?user=byyd&title=cto'
curl -b uid=100 '192.168.2.100/main?user=byyd&title=cto'
3.2 自定义变量
原理部分
在 Nginx 中,自定义变量可以用于存储和操作一些特定的值,以便在配置文件中的不同位置进行重用。
通过 set
指令可以将一个值赋给一个新的变量,即新建自定义变量。
基本语法
set $variable value; #变量名可自定义使用环境
server, location, if
举个例子
vim /apps/nginx/conf.d/computer.conf
#添加以下内容
location /test {set $name byyd;echo $name;set $my_port $server_port;echo $my_port;}
切换到另一台主机
curl 192.168.2.100/main
四、自定义访问日志 (优化)
自定义访问日志可以提供更灵活和定制化的日志记录方式。
-
满足特定需求:通过自定义访问日志,你可以选择记录特定的访问信息,如客户端IP地址、访问时间、请求内容、状态码、传输字节数、引用页面、用户代理等。这些信息可以根据你的需求进行自定义,以满足特定的分析、监控或统计需求。
-
减少日志量:默认情况下,Nginx 记录的访问日志较为详细,包含了大量的信息。而自定义访问日志可以让你只记录感兴趣的信息,避免产生过多的日志数据,减少磁盘空间和读写开销。
-
提高性能:自定义访问日志可以减少磁盘的写入操作,从而减小对系统性能的影响。尤其在高访问量的情况下,减少日志量可以提高系统的处理能力和响应速度。
-
日志分析与监控:自定义访问日志可以使日志数据更易于分析和监控。你可以根据自定义的格式,使用各种日志分析工具或脚本,提取有用的信息,进行访问分析、安全审计、性能优化等工作。
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))
五、Nginx压缩功能(重要)
原理部分
Nginx通过在服务器上启用gzip模块来提供压缩功能。
启用gzip后,Nginx会自动检测客户端的浏览器支持情况,然后在服务器和客户端之间压缩和解压缩文件。
太小的文件没必要压缩,压缩说不定变大了。
官方文档: 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;
配置实例
vim /apps/nginx/conf.d/computer.conf
浏览器访问 192.168.2.100/test.jpg
六、HTTPS 功能
6.1 Nginx的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等。
举个例子
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.crt相当于颁发机构
byyb.com.crt相当于颁发对象
cat ca.crt byyb.com.crt > www.byyb.com.crt #合并mv byyb.com.key www.byyb.com.key #公钥
#编辑配置文件
vim /apps/nginx/conf.d/computer.confserver {listen 80;listen 443 ssl;ssl_certificate /ct/www.byyb.com.crt;ssl_certificate_key /ct/ssl/www.byyb.com.key;ssl_session_cache shared:sslcache:20m;ssl_session_timeout 10m;
}location / {root /apps/nginx/html;if ( $scheme = http) {rewrite ^/(.*)$ https://www.byyb.com/$1 redirect;}
}
编辑Windows的本地hosts文件,添加地址映射
路径 C:\Windows\System32\drivers\etc\hosts
打开浏览器,访问
https:www.byyb.com
七、自定义图标
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; #设置文件过期时间
}
相关文章:
![](https://img-blog.csdnimg.cn/222f71f201084f27af87041b11002431.png)
Nginx详解 第三部分:Nginx高级配置(附配置实例)
Part 3 一、网页的状态页二、Nginx第三方模块2.1 echo 模块 三、变量3.1 内置变量3.1.1 常用内置变量3.1.2 举个例子 3.2 自定义变量 四、自定义访问日志 (优化)4.1 自定义访问日志的格式4.2 自定义json 格式日志 五、Nginx压缩功能(重要)六、HTTPS 功能…...
![](https://img-blog.csdnimg.cn/162a57040e7a4fd8b292ae4d1fdc96bf.png)
postman访问ruoyi后台接口
打开若依页面,登录进去,F12打开控制台,选一个后台服务,把下图两个节点,补到postman请求header里面即可...
![](https://img-blog.csdnimg.cn/15987d7f3eaf44e493234156c720826e.jpeg#pic_center)
大数据时代的软件开发实践:利用云计算和AI赋能创新
文章目录 云计算的赋能弹性资源管理远程协作与分布式开发持续集成和持续交付成本效益 人工智能的赋能数据驱动的决策自动化智能预测和优化自适应系统 创新的实践方法数据驱动的创新智能化产品开放式创新迭代和反馈 🎈个人主页:程序员 小侯 🎐…...
![](https://img-blog.csdnimg.cn/dce316486d2442a29f502ad1b02b5bd2.png)
32、启用 HTTP 响应压缩和编程式配置Web应用
★ 启用HTTP压缩 就是前端页面如果改动的比较多,那么响应就会比较慢,可以通过设置HTTP响应压缩来提高响应,如果前端改动少,那么就不需要启动这个响应压缩。 目的:为了提高HTTP响应数据在网络上的传输效率。▲ 设置如…...
![](https://img-blog.csdnimg.cn/82bf1870569547afae9fe01d148dbe6e.jpeg)
DiskCatalogMaker for Mac简单智能快速的磁盘管理工具
DiskCatalogMaker是一款Mac上的磁盘目录管理工具。它可以帮助用户快速创建和管理磁盘目录,方便查找和访问存储在磁盘上的文件和文件夹。它具有快速扫描和索引功能,生成详细的目录列表,支持关键字搜索和自定义标签。 此外,DiskCat…...
![](https://img-blog.csdnimg.cn/8c249900404b45a8b1a4d856fb8614da.png)
C语言练习5(巩固提升)
C语言练习5 选择题 选择题 1,下面代码的结果是:( ) #include <stdio.h> #include <string.h> int main() {char arr[] { b, i, t };printf("%d\n", strlen(arr));return 0; }A.3 B.4 C.随机值 D.5 💯答案解析&#…...
![](https://img-blog.csdnimg.cn/a3f8ef6a2e734c338aa5169ec410994a.png#pic_center)
SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第三天)动态SQL
动态SQL—SSM框架的学习与应用(Spring Spring MVC MyBatis)-Java EE企业级应用开发学习记录(第三天)Mybatis的动态SQL操作 昨天我们深入学习了Mybatis的核心对象SqlSessionFactoryBuilder,掌握MyBatis核心配置文件以及元素的使用,也掌握My…...
![](https://img-blog.csdnimg.cn/5f3484eaa651469382cdab80bc7b1c75.png)
Kaggle(3):Predict CO2 Emissions in Rwanda
Kaggle(3):Predict CO2 Emissions in Rwanda 1. Introduction 在本次竞赛中,我们的任务是预测非洲 497 个不同地点 2022 年的二氧化碳排放量。 在训练数据中,我们有 2019-2021 年的二氧化碳排放量 本笔记本的内容&am…...
![](https://img-blog.csdnimg.cn/img_convert/bf7240ea5171d74e007ebdf6ed324144.png)
【技巧分享】如何获取子窗体选择了多少记录数?一招搞定!
Hi,大家好久不见。 我这个更新速度是不是太慢了呀,因为,最近又又又在忙,请大家谅解啦。 现在更新文章、视频都要花好久去考虑,好不容易有个灵感了,一搜索,结果发现之前都已经分享过了(委屈脸&…...
![](https://www.ngui.cc/images/no-images.jpg)
Kotlin AQ
如何学习kotlin? 学习Kotlin的步骤如下: 1. 理解Kotlin的基础:首先,你需要理解Kotlin的基础知识,包括变量、数据类型、运算符、控制流等。你可以通过阅读Kotlin的官方文档或者其他在线教程来学习。 2. 实践编程:理论…...
![](https://img-blog.csdnimg.cn/b9718cc5e6f444ad8ac607c2ab523343.png)
SpringBoot入门篇2 - 配置文件格式、多环境开发、配置文件分类
目录 1.配置文件格式(3种) 例:修改服务器端口。(3种) src/main/resources/application.properties server.port80 src/main/resources/application.yml(主要用这种) server:port: 80 src/m…...
![](https://www.ngui.cc/images/no-images.jpg)
UOS安装6.1.11内核或4.19内核
6.1.11内核 sudo sh -c echo "deb https://proposed-packages.deepin.com/beige-testing unstable main dde community commercial " > /etc/apt/sources.list.d/deepin-testing.list sudo apt update && sudo apt install linux-image-6.1.11-amd64-de…...
![](https://www.ngui.cc/images/no-images.jpg)
HiveSQL刷题
41、同时在线人数问题 现有各直播间的用户访问记录表(live_events)如下,表中每行数据表达的信息为,一个用户何时进入了一个直播间,又在何时离开了该直播间。 user_id (用户id)live_id (直播间id)in_datetime (进入直…...
![](https://www.ngui.cc/images/no-images.jpg)
path路径模块
path模块是Node.js官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。 path.join( )用来将多个路径片段拼接成一个完整的路径字符串 ../会抵消前面的路径 const path require(path) const pathStr path.join(/a,/b,../,/d) conso…...
![](https://img-blog.csdnimg.cn/b70e5147a07a48f4a96fd1fcce55ed2b.png)
1.文章复现《热电联产系统在区域综合能源系统中的定容选址研究》(附matlab程序)
0.代码链接 文章复现《热电联产系统在区域综合能源系统中的定容选址研究》(matlab程序)-Matlab文档类资源-CSDN文库 1.简述 本文采用遗传算法的方式进行了下述文章的复现并采用电-热节点的方式进行了潮流计算以降低电网的网络损耗 分析了电网的基本数…...
![](https://img-blog.csdnimg.cn/815f71d62c4943e7bd540c80376317ef.png)
【Terraform学习】使用 Terraform 托管 S3 静态网站(Terraform-AWS最佳实战学习)
使用 Terraform 托管 S3 静态网站 实验步骤 前提条件 安装 Terraform: 地址 下载仓库代码模版 本实验代码位于 task_s3 文件夹中。 变量文件 variables.tf 在上面的代码中,您将声明,aws_access_key,aws_secret_key和区域变量…...
![](https://www.ngui.cc/images/no-images.jpg)
触发JVM fatal error并配置相关JVM参数
1. 絮絮叨叨 工作中,Java服务因为fatal error(致命错误,笔者称其为jvm crash),在服务运行日志中出现了致命错误的概要信息: # # A fatal error has been detected by the Java Runtime Environment: # # S…...
![](https://img-blog.csdnimg.cn/5baaae0d3cc343e1bc071caa066cd1d6.jpeg)
爬虫(bilibili热门课程记录)
什么是爬虫?程序蜘蛛,沿着互联网获取相关信息,收集目标信息。 一、python环境安装 1、先从Download Python | Python.org中下载最新版本的python解释器 2、再从Download PyCharm: Python IDE for Professional Developers by JetBrains中下…...
![](https://img-blog.csdnimg.cn/5897c33909d3452b9691cbfd88a577a6.png)
14-模型 - 增删改查
增: # 1. 找到模型类并创建对象 user User() # 2. 给对象的属性赋值 user.username username user.password password user.phone phone # 3. 将user对象添加到session中 (类似缓存) db.session.add(user) # 4. 提交数据 db.session.commit() 删: # 两种删除:# 1. 逻辑删…...
![](https://img-blog.csdnimg.cn/img_convert/83e3dea22f262a53022c44bea1313676.png)
C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器
1、打开仿真工具,创建PLC,注意创建完成后不要关闭 注意,这个IP地址必须与西门子虚拟网卡的IP地址及虚拟机的网卡IP地址同一网段 2、打开博途V15,创建项目,命名为Lan项目 3、添加1500系列CPU1513 4、设置设置IP地址及属…...
![](https://img-blog.csdnimg.cn/289dcdbb1a944324b1d667f1e05aec2f.png)
Linux系统编程:线程控制
目录 一. 线程的创建 1.1 pthread_create函数 1.2 线程id的本质 二. 多线程中的异常和程序替换 2.1 多线程程序异常 2.2 多线程中的程序替换 三. 线程等待 四. 线程的终止和分离 4.1 线程函数return 4.2 线程取消 pthread_cancel 4.3 线程退出 pthread_exit 4.4 线程…...
![](https://img-blog.csdnimg.cn/1f908c2049d24f0b99fb2a207e55cb1e.png)
基于Java+SpringBoot+Vue前后端分离纺织品企业财务管理系统设计和实现
博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…...
![](https://www.ngui.cc/images/no-images.jpg)
搭建开发环境-Windows
写C# 的请出去。 然后,Windows 是最好的Linux发行版。搭建开发环境-WSLUbuntu...
![](https://img-blog.csdnimg.cn/94d116f7e3c641ccab451b9cdfdf9364.png)
【 Python 全栈开发 - 人工智能篇 - 45 】集成算法与聚类算法
文章目录 一、集成算法1.1 概念1.2 常用集成算法1.2.1 Bagging1.2.2 Boosting1.2.2.1 AdaBoost1.2.2.2 GBDT1.2.2.3 XgBoost 1.2.3 Stacking 二、聚类算法2.1 概念2.2 常用聚类算法2.2.1 K-means2.2.2 层次聚类2.2.3 DBSCAN算法2.2.4 AP聚类算法2.2.5 高斯混合模型聚类算法 一、…...
![](https://www.ngui.cc/images/no-images.jpg)
SSM商城项目实战:账户充值功能实现
SSM商城项目实战:账户充值功能实现 在一个电商平台中,用户账户充值是一个非常重要的功能。本文将介绍如何在SSM(SpringSpringMVCMyBatis)商城项目中实现账户充值功能。通过本文的指导,你将学会如何在项目中添加账户充…...
![](https://www.ngui.cc/images/no-images.jpg)
wireshark工具pcap文件转换
pcap详解_pcap_loop_小虎随笔的博客-CSDN博客 分析802.11无线报文hexdump内容:利用wireshark自带二进制工具text2pcap将hexdump内容转换为pcap文件..._weixin_30835933的博客-CSDN博客 text2pcap: 将hex转储文本转换为Wireshark可打开的pcap文件(wireshark,数据) …...
![](https://img-blog.csdnimg.cn/a2e1d38159d04acfa0ccdfb1eedd91b9.png#pic_center)
Python+TinyPNG熊猫网站自动化的压缩图片
前言 本篇在讲什么 PythonTinyPNG自动化处理图片 本篇需要什么 对Python语法有简单认知 依赖Python2.7环境 依赖TinyPNG工具 本篇的特色 具有全流程的图文教学 重实践,轻理论,快速上手 提供全流程的源码内容 ★提高阅读体验★ 👉…...
![](https://img-blog.csdnimg.cn/6af88c25a61341c6b01f257b931670d6.png)
【Linux】socket 编程基础
文章目录 📕 网络间的通信📕 socket 是什么1. socket 套接字2. 套接字描述符3. 基本的 socket 接口函数3.1 头文件3.2 socket() 函数3.3 bind() 函数struct sockaddr主机序列与网络序列 3.4 listen() 函数3.5 connect() 函数3.6 accept() 函数IP 地址风格…...
![](https://img-blog.csdnimg.cn/img_convert/8dfe738dcb63176bd275dc4ea5298ea1.jpeg)
openGauss学习笔记-51 openGauss 高级特性-列存储
文章目录 openGauss学习笔记-51 openGauss 高级特性-列存储51.1 语法格式51.2 参数说明51.3 示例 openGauss学习笔记-51 openGauss 高级特性-列存储 openGauss支持行列混合存储。行存储是指将表按行存储到硬盘分区上,列存储是指将表按列存储到硬盘分区上。 行、列…...
![](https://img-blog.csdnimg.cn/f54755ad1b7b448cab91050592060665.png#pic_center)
ReactNative 密码生成器实战
效果展示图 使用插件 Formik 负责表单校验、监听表单提交、数据校验错误信息展示 Yup 负责表单校验规则 分析页面 从上述的展示图我们可以看到的主要元素有:输入框、单选按钮和按钮。其中生成的密码长度不可能很大也不可能为负数和 0,所以我们可以限…...
![](https://img-blog.csdnimg.cn/2ac3ef5b7eb34e379209dd8716ef2cce.png)
网站的百度地图怎么做/营销策略理论
主要是通过python、opencv库的子模块Contour来分析灰度图,并绘制等高线 参考文档:https://docs.opencv.org/ 安装opencv pip install opencv-python 分析位图文件,将颜色分层,并绘制等高线 import cv2 as cv imgcv.imread(&qu…...
![](https://images2015.cnblogs.com/blog/1133939/201706/1133939-20170627092609477-794218703.png)
全国做网站最好的公司有哪些/网站推广具体内容
CodeIgniter,按字面直译为“代码点火器”,轻量、快速,挺形象的,它是老外开发的MVC PHP框架,它的中国推广网站是:https://codeigniter.org.cn。 这是放在服务器www文件夹下的CI目录,其中user_gui…...
![](/images/no-images.jpg)
有自己的域名怎么建设网站/网络营销策略分析论文
规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必 须按本文档规范进行前台页面开发. 本文档如有不对或者不合适的地方请及时提出, 经讨论决定后方可更改。 基本准则 符合web标准, 语…...
![](https://img-blog.csdnimg.cn/img_convert/8be933f8802db6b8204eed9be6eebe8b.png)
wordpress公众号插件/seo快速整站上排名教程
常用抽奖算法对比基础的游戏抽奖算法通常要求实现在指定奖品的集合中,每个奖品根据对对应概率进行抽取。个人了解的主要有以下几中抽奖算法:随机数一一对应算法思想这种算法思想最为简单。将n个奖品编号0~n-1,其中各类奖品的概率通过其数量体…...
![](/images/no-images.jpg)
西部数码网站管理助手/广告设计与制作
请教高手 A a new B(); 2009-03-10 12:01cjp625511526 分类:网站使用 |浏览 5935 次A a new B();B继承A,请问a是A的实例还是B的实例啊?对象a可以调用A类中的方法吗&#…...
帝国cms怎么做网站地图/模板之家
问题分析:买鸡的几种方式,要求,用100块,买x只公鸡,y只母鸡,和z只小鸡,其中所有鸡的个数总和是100.所有鸡的花销是100.小鸡z的只数必须是3的倍数。 注意1:要求有输入,其实…...