wordpress 点赞数量翻倍,搜索引擎优化的步骤,软件开网站建设骗术,防城港网站设计nginx 变量
Nginx的配置文件使用的语法的就是一门微型的编程语言。既然是编程语言#xff0c;一般也就少不了“变量”这种东西。
Nginx配置文件使用的语法主要包括以下几个方面#xff1a;
#xff08;1#xff09;配置块 (Block Directives):
Nginx配置文件由多个嵌套的…nginx 变量
Nginx的配置文件使用的语法的就是一门微型的编程语言。既然是编程语言一般也就少不了“变量”这种东西。
Nginx配置文件使用的语法主要包括以下几个方面
1配置块 (Block Directives):
Nginx配置文件由多个嵌套的配置块组成。
示例配置块如 http, server, 和 location。
配置块以名称开始后面跟着一对花括号 {}其中包含具体的指令。
2指令 (Directives):
指令是Nginx配置的核心组成部分决定了Nginx如何处理请求。
指令以名称开始后面跟随一个或多个参数最后以分号 ; 结束。
示例指令如 listen 80;。
3变量 (Variables):
Nginx支持预定义变量例如 $host 和 $remote_addr它们在处理请求时动态生成。
4上下文 (Contexts):
Nginx配置文件由多个上下文组成如 http, server, 和 location。
每个上下文可以包含特定类型的指令。
5包含 (Includes):
Nginx允许包含其他配置文件以使主配置文件更加简洁和易于管理。
使用 include 指令来包含其他配置文件例如 include /etc/nginx/conf.d/*.conf;。
6注释 (Comments):
Nginx的配置文件支持使用 # 字符进行注释。
1、nginx变量简介
所有的 Nginx变量在 Nginx 配置文件中引用时都须带上 $ 前缀
在 Nginx 配置中变量只能存放一种类型的值而且也只存在一种类型那就是字符串类型
所有的变量值都可以通过这种方式引用$变量名
2、nginx 变量的定义和使用
nginx中的变量分为两种自定义变量与内置预定义变量。
1、自定义变量
1、声明变量可以在sever,http,location等标签中使用set命令声明变量语法如下
set $变量名 变量值
注意:
nginx 中的变量必须都以$开头
nginx 的配置文件中所有使用的变量都必须是声明过的否则 nginx 会无法启动并打印相关异常日志
Nginx 变量的创建只能发生在 Nginx 配置加载的时候或者说 Nginx 启动的时候。而赋值操作则只会发生在请求实际处理的时候。这意味着不创建而直接使用变量会导致启动失败。
2、内置预定义变量
内置预定义变量即无需声明就可以使用的变量通常包括一个http请求或响应中一部分内容的值以下为一些常用的内置预定义变量
nginx 监控
1、nginx基础监控
- 进程监控
- 端口监控
注意 这两个是必须要加在zabbix监控加触发器有问题及时告警
nginx 提供了 ngx_http_stub_status_module这个模块提供了基本的监控功能查看Nginx连接状态。通过HTTP请求来获取与Nginx服务器相关的实时状态信息包括当前连接数、请求处理情况、响应时间等。
2、监控的指标
1、基本活跃指标
Accepts接受、Handled已处理、Requests请求数是一直在增加的计数器。Active活跃、Waiting等待、Reading读、Writing写随着请求量而增减。
2、服务器错误率
通过监控固定时间间隔内的错误代码4XX代码表示客户端错误5XX代码表示服务器端错误。
3、请求处理时间
请求处理时间也可以被记录在 access log 中通过分析 access log统计请求的平均响应时间。 ----$request_time 变量
1、nginx Stub Status 监控模块安装
先使用命令查看是否已经安装这个模块# -V会显示版本号和模块等信息、小写v仅显示版本信息
~]# nginx -V注意:是如果没有此模块需要重新安装编译命令如下
./configure –with-http_stub_status_module
具体的使用方法是在执行 ./configure 时指定 --with-http_stub_status_module然后通过配置~]# vim /etc/nginx/conf.d/status.conf
server {listen 80;server_name localhost;location /nginx-status {stub_status on;#access_log on;# 可选参数允许指定IP地址或IP段来限制访问# allow 127.0.0.1;# allow 192.168.0.0/24;# deny all;}
}
2、nginx 状态查看
配置完成后在浏览器中输入192.168.175.128/nginx-status 查看显示信息如下
Active connections: 2 当前nginx处理请求的数目即活跃的连接数 2个
server accepts handled requests #连接数 成功连接数握手 处理请求数9 9 29
Reading: 0 Writing: 1 Waiting: 0 失败连接连接数(accepts)-成功连接数(handled)(相等表示中间没有失败的),
Reading nginx读取到客户端的Header信息数。请求头 -----速度快。
Writing nginx返回给客户端的Header信息数。响应头
Waiting 开启keep-alive的情况下即nginx已处理完正在等候下一次请求指令的驻留连接。
connection #连接数tcp连接
request #http请求GET/POST/DELETE/UPLOAD
长连接驻留连接
keepalive_timeout设置为0意味着禁用长连接Keep-Alive功能
长连接是指在一个TCP连接上可以发送多个HTTP请求在所有的请求处理完成后保持该
连接处于打开状态以便后续请求复用。这样可以减少TCP连接的建立和关闭的开销提高服务器的性能。默认情况下keepalive_timeout的值是75s。当一个连接的空闲时间超过了keepalive_timeout
的值Nginx会主动关闭这个连接。当将keepalive_timeout设置为0时表示没有空闲时间限制即不等待客户端主动关闭连接
而立即关闭连接。这样做可以节省服务器的资源但也会增加服务器与客户端建立连接的频率。
3、Stub Status 参数说明 基于脚本监控nginx的端口
[rootnginx-server ~]# vim check_port.sh
#!/usr/bin/bash
curl -I http://127.0.0.1 /dev/null
if [ $? -ne 0 ];thenecho nginx 未运行正在启动中...sleep 1systemctl start nginxecho 正在检查nginx是否启动...portnetstat -lntp | grep nginx |awk {print $4} | awk -F: {print $NF}echo nginx已经启动,端口为: $port
fi
HTTPS 基本原理
HTTPS全称HyperText Transfer Protocol over Secure Socket Layer其实 HTTPS 并不是一个新鲜协议Google 很早就开始启用了初衷是为了保证数据安全。 国内外的大型互联网公司很多也都已经启用了HTTPS这也是未来互联网发展的趋势。
1、加密算法
1. 对称加密
加密和解密使用相同的密钥。这意味着发送方和接收方都需要共享同一个密钥来进行加密和解密操作。
对称加密算法的原理
A要给B发送数据A做一个对称密钥使用密钥给文件加密发送加密后的文件和钥匙B拿钥匙解密
2. 非对称加密
公钥加密且可以自由共享私钥解密且必须保密
A要给B发送数据
B做一对非对称的密钥,发送公钥给A,A拿公钥对数据进行加密,发送加密后的数据给B,B拿私钥解密
3. 哈希算法
一种数学函数可以将任意长度的信息映射为固定长度的值通常其长度要比信息小得多。
例如MD5、SHA-1、SHA-2如SHA-256 等推荐SHA-256安全性高
md5sum计算文件的MD5哈希值生成唯一的128位哈希值用于校验文件的完整性和验证文件的一致性。
md5sum [文件路径]
4. 数字签名
数字签名是一种用于验证文件或文档的完整性和真实性的技术。它是通过使用非对称加密算法的公钥和私钥来实现的。
签名就是在信息的后面再加上一段内容信息经过hash后的值可以证明信息没有被修改过。
hash值一般都会加密后也就是签名再和信息一起发送以保证这个hash值不被修改。
数字签名的过程如下
1. 发送者使用私钥对数据进行哈希。哈希算法生成唯一的固定长度哈希值唯一表示文件内容。
2. 发送者使用私钥对哈希值进行加密生成数字签名。
3. 发送者将数据和数字签名一起发送给接收者。
4. 接收者使用发送者的公钥对数字签名进行解密得到哈希值。
5. 接收者对接收的数据使用相同哈希算法进行哈希生成新的哈希值。
6. 接收者比对解密生成的哈希值和自己计算的哈希值。如果一致说明文件的内容没有被篡改过数字签名有效。
2、HTTPS 协议介绍 HTTP 协议HyperText Transfer Protocol超文本传输协议是客户端浏览器与Web服务器之间的应用层通信协议 。 HTTPS 协议HyperText Transfer Protocol over Secure Socket Layer,超文本传输安全协议HTTPSSL/TLS HTTP 下加入 SSL 层HTTPS 的安全基础是 SSL因此加密的详细内容就需要 SSL用于安全的 HTTP 数据传输。 如上图所示 HTTPS 相比 HTTP 多了一层 SSL/TLS
SSL/TLS
SSL(Secure Sockets Layer 安全套接层协议)和TLSTransport Layer Security传输层安全协议是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层为数据通讯进行加密提供安全支持。
SSL协议提供的服务主要有 ssl:身份认证和数据加密。保证数据完整性
1认证用户和服务器确保数据发送到正确的客户机和服务器
2加密数据以防止数据中途被窃取
3维护数据的完整性确保数据在传输过程中不被改变。
3、HTTPS 原理
1. HTTP 访问过程 如上图所示HTTP请求过程中客户端与服务器之间没有任何身份确认的过程数据全部明文传输“裸奔”在互联网上。这意味着在传输过程中攻击者可以拦截和窃听数据包括用户的敏感信息如用户名、密码等或其他数据。 可以看到客户端发出的请求很容易被黑客截获如果此时黑客冒充服务器则其可返回任意信息给客户端而不被客户端察觉。
2. HTTP 传输面临的风险
- 窃听风险黑客可以获知通信内容。
- 篡改风险黑客可以修改通信内容。
- 冒充风险黑客可以冒充他人身份参与通信。
3. SSL证书
那有没有一种方式既可以安全的获取公钥又能防止黑客冒充呢 那就需要用到终极武器了SSL 证书申购
证书.crt, .pem
私钥.key
证书请求文件.csr SSL 证书具体内容
1证书的发布机构CA
2证书的有效期
3公钥
4证书所有者
5签名 ----- 签名就可以理解为是钞票里面的一个防伪标签。
校验SSL证书过程
客户端在接受到服务端发来的SSL证书时会对证书的真伪进行校验以浏览器为例说明如下
1首先浏览器读取证书中的证书所有者、有效期等信息进行一一校验
2浏览器开始查找操作系统中已内置的受信任的证书发布机构CA与服务器发来的证书中的颁发者CA比对用于校验证书是否为合法机构颁发
3如果找不到浏览器就会报错说明服务器发来的证书是不可信任的。
4如果找到那么浏览器就会从操作系统中取出颁发者CA的公钥然后对服务器发来的证书里面的签名进行解密
5浏览器使用相同的hash算法计算出服务器发来的证书的hash值将这个计算的hash值与证书中签名做对比
6对比结果一致则证明服务器发来的证书合法没有被冒充
7此时浏览器就可以读取证书中的公钥用于后续加密了
8client与web协商对称加密算法client生成对称加密密钥并使用web公钥加密发送给web服务器web服务器使用web私钥解密
9使用对称加密密钥传输数据并校验数据的完整性
通过发送SSL证书的形式既解决了公钥获取问题又解决了黑客冒充问题一箭双雕HTTPS加密过程也就此形成
相比HTTPHTTPS 传输更加安全的原因
1 所有信息都是加密传播黑客无法窃听。
2 具有校验机制一旦被篡改通信双方会立刻发现。
3 配备身份证书防止身份被冒充。
4. CA 机构
CACertificate Authority证书颁发机构主要负责证书的颁发、管理以及归档和吊销。证书内包含了拥有证书者的姓名、地址、电子邮件帐号、公钥、证书有效期、发放证书的CA、CA的数字签名等信息。证书主要有三大功能加密、签名、身份验证。 阿里云申请配置ssl证书---实战
1.准备一台阿里云服务器我的机器在香港 2.准备一个域名 3.申请ssl证书 开始配置信息 到这需要等待大约10几分钟然后刷新 先查看帮助文档 然后在下载 http配置为https
阿里云配置证书案例
yum安装nginx ----略
将证书上传到服务器中
1.首先在服务器创建存放证书的文件夹
~]# cd /etc/nginx/ mkdir cert
2.将证书文件复制到服务器对应的文件夹中
~]# ls
2447549_www.testpm.cn_nginx.zip
~]# unzip 2447549_www.testpm.cn_nginx.zip
~]# cp 2447549_www.testpm.cn* /etc/nginx/cert/
~]# cd /etc/nginx/cert/
改名
[rootnginx cert]# mv 2447549_www.testpm.cn.key www.testpm.cn.key
[rootnginx cert]# mv 2447549_www.testpm.cn.pem www.testpm.cn.pem
3.证书配置如443端口、证书路径、私钥路径等相关内容
证书复制完成之后可以对nginx配置文件进行更改使用vim命令
[rootnginx ~]# cd /etc/nginx/conf.d/
[rootnginx conf.d]# vim /etc/nginx/conf.d/nginx_ssl.conf
server {listen 443 ssl; #指定https端口443server_name www.testpm.cn;access_log /var/log/nginx/https_access.log main;
ssl_certificate /etc/nginx/cert/www.testpm.cn.pem; #指定证书路径ssl_certificate_key /etc/nginx/cert/www.testpm.cn.key; #指定私钥路径ssl_session_timeout 5m; #配置用于SSL会话的缓存ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #指定使用的协议ssl_ciphers ALL:!ADH:!EXPORT56:RC4RSA:HIGH:MEDIUM:LOW:SSLv2:EXP; #密码指定为OpenSSL支持的格式ssl_prefer_server_ciphers on; #设置协商加密算法。
location / {root /usr/share/nginx/html;index index.html index.htm;}
}
80转443端口
server {listen 80;server_name www.testpm.cn;location / {#return 301 http://$host$request_url;rewrite .* https://www.testpm.cn permanent;}
}
80/443均可访问
在一个 server 里面同时监听 80 和 443 两个端口
server {listen 80;listen 443 ssl;server_name www.testpm.cn; # IP或域名ssl_certificate /etc/nginx/cert/www.testpm.cn.pem; # 证书路径ssl_certificate_key /etc/nginx/cert/www.testpm.cn.key; # 私钥路径ssl_session_timeout 5m;ssl_protocols SSLv2 SSLv3 TLSv1;ssl_ciphers ALL:!ADH:!EXPORT56:RC4RSA:HIGH:MEDIUM:LOW:SSLv2:EXP;ssl_prefer_server_ciphers on;client_max_body_size 50M;client_body_buffer_size 2M;location / {root /usr/share/nginx/html;index index.html index.htm;try_files $uri $uri/ router;}
}需要给域名做一个解析香港的服务器添加一个A记录即可 解析完成之后大约需要等待3-5分钟
测试访问 访问成功