【Nginx篇】Nginx轻松上手

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 一.简单介绍
      • 1.介绍
      • 2.功能
      • 3.安装步骤
    • 二.常用命令
      • 1.启动 nginx
      • 2.停止 nginx
      • 3.重启 nginx
      • 4.重新加载配置
      • 5.设置开机启动
      • 6.关闭开机启动设置
      • 7.检查配置是否正确
      • 8.检查加载模块
      • 9.重新加载
      • 10.指定启动
    • 三.常见配置
      • 1.配置目录
      • 2.执行目录
      • 3.站点目录
      • 4.我的 nginx 配置
      • 5.服务器
      • 6.配置文件的优先级
      • 7.websocket
    • 四.牛逼特性
      • 1.域名配置
      • 2.图片不展示
      • 3.负载均衡
      • 4.动静分离
      • 5.正向代理
      • 6.反向代理
      • 7.root 和 alias 区别
      • 8.proxy_pass
      • 9.限流功能
    • 五.docker 安装 nginx
      • 1.安装步骤
      • 2.启动命令
    • 六.配置 https
      • 1.上传证书
      • 2.http 的配置
      • 3.证书文件名称
      • 4.https 的配置
      • 5.验证
      • 6.加载配置
      • 7.查看日志

一.简单介绍

1.介绍

Nginx(发音为"engine x")是一款高性能、轻量级的开源 Web 服务器和反向代理服务器,它具有以下特点和功能:

  1. 高性能:Nginx 被设计为能够处理大量并发连接而不显著增加系统负担。它采用异步事件驱动的架构,可以有效地处理高流量的 Web 请求。
  2. 负载均衡:Nginx 支持负载均衡,可以将请求分发到多个后端服务器,以提高网站性能和可用性。
  3. 反向代理:Nginx 可以充当反向代理,将客户端请求转发到后端服务器,隐藏后端服务器的真实 IP 地址,增加安全性和可扩展性。
  4. 静态文件服务:Nginx 可以高效地提供静态文件(如 HTML、CSS、JavaScript、图像等)的服务,减轻应用服务器的负担。
  5. SSL/TLS 支持:Nginx 支持加密通信,可以配置 SSL/TLS 来保护数据传输的安全性。
  6. URL 重写:Nginx 允许对 URL 进行灵活的重写和转发,以实现友好的 URL 结构和路由。
  7. 缓存:Nginx 可以缓存静态内容和动态内容,提高响应速度并减轻后端服务器的负担。
  8. 访问控制:Nginx 可以实施访问控制、IP 黑名单、基本身份验证等安全性措施。
  9. 模块化架构:Nginx 使用模块化的架构,允许用户通过插件和模块来扩展其功能。

Nginx 通常被用于构建高性能的 Web 服务器环境,特别适合处理大流量的网站和应用。它在互联网上广泛使用,并已成为许多大型网站和应用的关键组件之一。

2.功能

以下是 Nginx 的一些主要功能:

  1. Web 服务器: Nginx 可以作为一个快速、高性能的 Web 服务器,可以直接处理和提供静态和动态内容。

  2. 反向代理: Nginx 可以作为反向代理服务器,接收客户端请求并将其转发到后端服务器,用于负载均衡、缓存、SSL 终端等。

  3. 负载均衡: Nginx 可以将来自客户端的请求分发到多个后端服务器,实现负载均衡,提高应用的可扩展性和性能。

  4. HTTP 缓存: Nginx 可以缓存静态和动态内容,减轻后端服务器的负载,提高响应速度。

  5. SSL 终端: Nginx 可以处理 SSL/TLS 连接,用于终止和处理加密通信,减轻后端服务器的计算负担。

  6. 反向代理缓存: Nginx 可以作为反向代理缓存,将动态内容缓存到本地,减少对后端服务器的请求,提高响应速度。

  7. 动态内容处理: Nginx 可以处理 FastCGI、uWSGI、SCGI 等协议,用于处理动态内容如 PHP、Python、Ruby 等。

  8. 限流和速率控制: Nginx 可以实施请求速率控制和限流,以防止服务器过载。

  9. 安全性: Nginx 提供安全功能如防止恶意请求、DDoS 攻击防护等。

  10. 虚拟主机: Nginx 支持虚拟主机配置,可以在一个服务器上托管多个域名。

  11. 自定义模块: Nginx 支持自定义模块开发,可以根据需求添加自定义的功能和扩展。

  12. 事件驱动: Nginx 使用事件驱动的异步架构,可以处理大量并发连接,提供出色的性能。

  13. 日志记录: Nginx 可以记录详细的访问日志,方便监控和分析。

Nginx 是一个功能强大的服务器软件,适用于多种应用场景,如 Web 服务器、反向代理、负载均衡、缓存、安全保护等。它在大型互联网公司和企业中被广泛使用,提供了高性能和稳定性。

3.安装步骤

#查看nginx在哪
whereis nginx#yum 安装ningx
#nginx添加yum repro库中
#下载nginx包
wget https://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm# 建立nginx的yum仓库
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm#查看nginx的信息
yum info nginx#查看yum源仓库中nginx版本
yum --showduplicates list nginx | expand#安装nginx,默认安装最新的稳定版本 及 nginx 1.20.2
yum install nginx#查看版本
nginx -V#查看日志
tail -f /var/log/nginx/error.log#配置文件地址
/etc/nginx/nginx.conf

二.常用命令

1.启动 nginx

#查看nginx位置
whereis nginx#nginx可用
systemctl enable nginx#启动nginx
systemctl start nginx#查看进程号
netstat -nltp#查看状态
systemctl status nginx

2.停止 nginx

#停止 nginx
systemctl stop nginx

3.重启 nginx

#重启 nginx
systemctl restart nginx

4.重新加载配置

#重新加载配置
systemctl reload nginx

5.设置开机启动

#设置开机启动
systemctl enable nginx

6.关闭开机启动设置

#关闭开机启动设置
systemctl disable nginx

7.检查配置是否正确

#检查配置是否正确(常用)
nginx -t

8.检查加载模块

./nginx -V

9.重新加载

#进入nginx可执行目录sbin下,输入命令,不用重启
./nginx -s reload

10.指定启动

#启动nginx,并挂在配置文件目录到宿主机
docker run -d --name deepexi-belle-damo-nginx --privileged=true --dns 114.114.114.114 -p 80:80  \
-v /etc/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \--restart=always deploy.deepexi.com/datasense-test/deepexi-belle-damo-nginx:v1.0.0

三.常见配置

Nginx 的主配置文件是 nginx.conf,这个配置文件一共由三部分组成,分别为全局块、events 块和 http 块。在 http 块中,又包含 http 全局块、多个 server 块。每个 server 块中,可以包含 server 全局块和多个 location 块。在同一配置块中嵌套的配置块,各个之间不存在次序关系。

1.配置目录

#从 / 根目录下查找文件名为 nginx.conf 的文件
find / -name nginx.conf#从/etc 目录下查找文件名为 nginx.conf 的文件
find /etc -name nginx.conf#检查配置文件
nginx -t#目录
/etc/nginx

2.执行目录

/usr/sbin/nginx

3.站点目录

/usr/share/nginx/html

4.我的 nginx 配置

server {listen       80;server_name  qinyingjie.top;root         /usr/share/nginx/html;include /etc/nginx/default.d/*.conf;location / {root   html;index  index.html index.htm;proxy_pass http://localhost:8080/;}location ~ .*\.(gif|jpg|jpeg|png|jfif)$ {root  /kwan/;autoindex    on ;}error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}
}
  • = :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求
  • ~ :用于表示 uri 包含正则表达式,并且区分大小写
  • ~* :用于表示 uri 包含正则表达式,并且不区分大小写
  • ^~ :用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求。字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。

5.服务器

43.139.90.182 qinyingjie.top

6.配置文件的优先级

启动时可以指定配置文件

首先,说明结论:同一目录下存在多个配置文件时,Nginx是按照文件的名称先后顺序依次读取的!

#验证配置文件
/usr/local/nginx/sbin/nginx -tc /usr/local/nginx/conf/nginx.conf
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf#指定配置文件启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf#指定配置文件重启
/usr/local/nginx/sbin/nginx -s reload -c /usr/local/nginx/conf/nginx.conf#说明:-c 参数指定运行nginx系统的自定义配置文件。
#若加:使用自定义配置文件。
#若不加:使用默认的nginx.conf(一般位于/usr/local/conf/nginx.conf,具体以实际情况为准)
nginx -c /usr/local/nginx/conf/nginx.conf

7.websocket

要在 Nginx 中开通 WebSocket,需要在 Nginx 配置文件中添加相应的配置。

以下是一个简单的 Nginx 配置文件示例,其中开通了 WebSocket:

http {# ...map $http_upgrade $connection_upgrade {default upgrade;''      close;}server {listen 80;server_name example.com;location /ws/ {proxy_pass http://backend_server/ws/;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}}
}

在这个配置文件中,map 指令用于将 HTTP 请求头中的 UpgradeConnection 字段映射到 Nginx 的变量中,proxy_pass 指令用于将请求转发到后端服务器,proxy_http_version 指令用于指定使用 HTTP 1.1 协议进行转发,proxy_set_header 指令用于设置请求头字段。

具体来说,proxy_set_header Upgrade $http_upgrade; 指令用于将 HTTP 请求头中的 Upgrade 字段设置为 $http_upgrade 变量的值,proxy_set_header Connection $connection_upgrade; 指令用于将 HTTP 请求头中的 Connection 字段设置为 $connection_upgrade 变量的值。

这样,当客户端发送一个 WebSocket 请求时,Nginx 就会将其转发到后端服务器,并将请求头中的 UpgradeConnection 字段设置为 WebSocket 需要的值,从而成功开通了 WebSocket。

四.牛逼特性

1.域名配置

upstream qinyingjie.top {server localhost:8080;
}
location / {proxy_pass https://www.qinyingjie.top;
}
server_name  qinyingjie.top;

2.图片不展示

location ~ .*\.(gif|jpg|jpeg|png|jfif)$ {proxy_pass https://www.qinyingjie.top;root /kwan/;autoindex on;
}

3.负载均衡

1.轮训

upstream open-api-test-category{server 10.250.16.111:8195;server 10.250.16.111:8196;
}location / {proxy_pass http://open-api-test-category/;
}

2.权重

upstream open-api-test-category{server 10.250.16.111:8195 weight=1;server 10.250.16.111:8196 weight=3;
}location / {proxy_pass http://open-api-test-category/;
}

3.hash

upstream open-api-test-category{server 10.250.16.111:8195;server 10.250.16.111:8196;ip_hash;
}location / {proxy_pass http://open-api-test-category/;
}

4.动静分离

location ~ .*\.(gif|jpg|jpeg|png|jfif)$ {root   /kwan/ ;autoindex    on ;
}

5.正向代理

  • 正向代理是代理服务器位于客户端和目标服务器之间的一种代理方式。
  • 客户端请求发送到正向代理服务器,然后由代理服务器将请求转发到目标服务器。
  • 正向代理隐藏了客户端的真实 IP 地址,使目标服务器只能看到代理服务器的 IP 地址。
  • 正向代理通常用于访问被封锁或受限制的内容,或者用于增加安全性和隐私。
  • 比如 VPN,原理就是使用了正向代理,隐藏了客户端的信息。

6.反向代理

  • 反向代理是代理服务器位于目标服务器和客户端之间的一种代理方式。
  • 客户端将请求发送到反向代理服务器,然后代理服务器根据规则将请求转发给后端的目标服务器。
  • 反向代理隐藏了目标服务器的真实 IP 地址,客户端只能看到代理服务器的 IP 地址。
  • 反向代理通常用于负载均衡、缓存、安全性和高可用性方面,可以提高网站的性能和可靠性。
  • 比如部署的服务,使用反向代理,隐藏服务端信息,避免被攻击。
location / {root   html;index  index.html index.htm;proxy_pass http://localhost:8080/;
}

7.root 和 alias 区别

最基本的区别:alias 指定的目录是准确的,root 是指定目录的上级目录,并且该上级目录要含有 location 指定名称的同名目录。另外,根据前文所述,使用 alias 标签的目录块中不能使用 rewrite 的 break。

  • alias 虚拟目录配置中,location 匹配的 path 目录如果后面不带"/“,那么访问的 url 地址中这个 path 目录后面加不加”/“不影响访问,访问时它会自动加上”/“;

  • 但是如果 location 匹配的 path 目录后面加上”/“,那么访问的 url 地址中这个 path 目录必须要加上”/“,访问时它不会自动加上”/“。如果不加上”/“,访问就会失败!

  • root 目录配置中,location 匹配的 path 目录后面带不带”/",都不会影响访问。

在 nginx 配置中的良好习惯是:

  • 在 location /中配置 root 目录;
  • 在 location /path 中配置 alias 虚拟目录。
#直观理解如下形式:
location /dev/{alias /web/dev/doc/; #这个查找文件的路径直接是/web/dev/doc/
}location /dev/{root /web/dev/doc/; #这个查找文件的路径应该是/web/dev/doc/dev
}
# 这里使用root配置 如果访问 192.168.2.3/pak/a.html  则对应的路径为:/usr/local/pak/a.html
# 通过root配置则location配置的/pak/一定是要在root对应的/usr/local/目录下要有的目录

8.proxy_pass

结论:

  • 如果 proxy_pass 末尾有斜杠/,proxy_pass 不拼接 location 的路径
  • 如果 proxy_pass 末尾无斜杠/,proxy_pass 会拼接 location 的路径

1.proxy_pass 末尾有斜杠

location  /api/ {proxy_pass http://127.0.0.1:8000/;
}

请求地址:http://localhost/api/test
转发地址:http://127.0.0.1:8000/test

2.proxy_pass 末尾无斜杠

location  /api/ {proxy_pass http://127.0.0.1:8000;
}

请求地址:http://localhost/api/test
转发地址:http://127.0.0.1:8000/api/test

3.proxy_pass 包含路径,且末尾有斜杠

location  /api/ {proxy_pass http://127.0.0.1:8000/user/;
}

请求地址:http://localhost/api/test
转发地址:http://127.0.0.1:8000/user/test

4.proxy_pass 包含路径,末尾无斜杠

location  /api/ {proxy_pass http://127.0.0.1:8000/user;
}

请求地址:http://localhost/api/test
转发地址:http://127.0.0.1:8000/usertest

9.限流功能

nginx 提供了两种限流方式,

  • 一种是限制请求速率
  • 一种是限制连接数量

限制请求速率:nginx 的 ngx_http_limit_req_module 模块提供限制请求处理速率的能力,使用了漏桶算法(leaky bucket algorithm)。我们可以想像有一只上面进水、下面匀速出水的桶,如果桶里面有水,那刚进去的水就要存在桶里等下面的水流完之后才会流出,如果进水的速度大于水流出的速度,桶里的水就会满,这时水就不会进到桶里,而是直接从桶的上面溢出。对应到处理网络请求,水代表从客户端来的请求,而桶代表一个队列,请求在该队列中依据先进先出(FIFO)算法等待被处理。漏的水代表请求离开缓冲区并被服务器处理,溢出代表了请求被丢弃并且永不被服务。

漏桶算法

image-20230106162431269

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s;server {location ~* \.(html)$ {limit_req zone=mylimit;}
}

limit_req_zone 用于设置限流和共享内存区域的参数,格式为:limit_req_zone key zone rate。

  • key:定义限流对象,$binaryremote_addr 是 nginx 中的变量,表示基于 remote_addr(客户端 IP) 来做限流,binary 是二进制存储。使用 $binary_remote_addr 而不是 $remote_addr 是因为二进制存储可以压缩内存占用量。 $remote_addr 变量的大小从 7 到 15 个字节不等,而 $binary_remote_addr 变量的大小对于 IPv4 始终为 4 个字节,对于 IPv6 地址则为 16 个字节。
  • zone:定义共享内存区来存储访问信息,访问信息包括每个 IP 地址状态和访问受限请求 URL 的频率等。zone 的定义又分为两个部分:由 zone= 关键字标识的区域名称,以及冒号后面的区域大小。myLimit:10m 表示一个大小为 10M,名字为 myLimit 的内存区域。1M 能存储 16000 个 IP 地址的访问信息,myLimit 大概可以存储约 160000 个地址。nginx 创建新记录的时候,会移除前 60 秒内没有被使用的记录,如果释放的空间还是存储不了新的记录,会返回 503 的状态码。
  • rate:设置最大的访问速率。rate=2r/s(为了好模拟,rate 设置的值比较小),表示每秒最多处理 2 个请求。事实上 nginx 是以毫秒为粒度追踪请求的,rate=2r/s 实际上是每 500 毫秒 1 个请求,也就是说,上一个请求完成后,如果 500 毫秒内还有请求到达,这些请求会被拒绝(默认返回 503,如果想修改返回值,可以设置 limit_req_status)。

limit_req_zone 只是设置限流参数,如果要生效的话,必须和 limit_req 配合使用。limit_req 的格式为:limit_req zone=name [burst=number] [nodelay]。
上面的例子只简单指定了 zone=mylimit,表示使用 mylimit 这个区域的配置,在请求 html 文件时进行限流。我们可以理解为这个桶目前没有任何储存水滴的能力,到达的所有不能立即漏出的请求都会被拒绝。如果我 1 秒内发送了 10 次请求,其中前 500 毫秒 1 次,后 500 毫秒 9 次,那么只有前 500 毫秒的请求和后 500 毫秒的第一次请求会响应,其余请求都会被拒绝。

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s;server {location ~* \.(html)$ {limit_req zone=mylimit burst=5;}
}

burst 表示在超过设定的访问速率后能额外处理的请求数。当 rate=2r/s 时,表示每 500ms 可以处理一个请求。burst=5 时,如果同时有 10 个请求到达,nginx 会处理第 1 个请求,剩余 9 个请求中,会有 5 个被放入队列,剩余的 4 个请求会直接被拒绝。然后每隔 500ms 从队列中获取一个请求进行处理,此时如果后面继续有请求进来,如果队列中的请求数目超过了 5,会被拒绝,不足 5 的时候会添加到队列中进行等待。我们可以理解为现在的桶可以存 5 滴水:

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s;server {location ~* \.(html)$ {limit_req zone=mylimit burst=5 nodelay;}
}

nodelay 表示不延迟。设置 nodelay 后,第一个到达的请求和队列中的请求会立即进行处理,不会出现等待的请求。需要注意的是,虽然队列中的 5 个请求立即被处理了,但是队列中的位置依旧是按照 500ms 的速度依次被释放的。后面的 4 个请求依旧是被拒绝的,长期来看并不会提高吞吐量的上限,长期吞吐量的上限是由设置的 rate 决定的。

nginx 限流使用了令牌桶算法:

image-20230105172231302

漏桶算法和令牌桶算法都是用于实现流量控制和限流的算法,但它们的原理和适用场景略有不同。

漏桶算法: 漏桶算法模拟了一个漏桶,请求被认为是水滴,以固定的速率流出(漏出)系统。如果流入的请求速率超过了漏桶的容量,多余的请求将会被丢弃或者等待下一个时间段。漏桶算法适用于平滑流量,防止系统被大量突发流量压垮。但是,对于短时间内的突发流量,漏桶算法并不是特别有效,因为它无法快速处理瞬时大量的请求,而只能以固定的速率处理。

令牌桶算法: 令牌桶算法也是一种流量控制算法,它基于一个令牌桶的概念。令牌以一定的速率被添加到桶中,每个请求在处理之前需要获取一个令牌,如果没有可用的令牌,则请求将被暂时阻塞或丢弃。令牌桶算法可以适应瞬时的突发流量,因为当桶中积累足够多的令牌时,可以快速处理突发请求,而不会受限于固定的速率。这使得令牌桶算法更适合处理突发流量的情况。

所以,总的来说,漏桶算法更适合平滑流量,而令牌桶算法更适合应对突发流量。在实际应用中,可以根据需求选择合适的算法来实现流量控制和限流。

五.docker 安装 nginx

1.安装步骤

#查找nginx
docker search nginx#下载镜像
docker pull nginx:latest#查看本地镜像
docker images#运行容器
docker run --name nginx-test -p 8080:80 -d nginx
参数说明:
--name nginx-test:容器名称。
-p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
-d nginx: 设置容器在在后台一直运行。#访问是否成功
127.0.01:8080

2.启动命令

#启动nginx,并挂在配置文件目录到宿主机
docker run -d --name deepexi-belle-damo-nginx \
--privileged=true \
--dns 114.114.114.114 \
-p 80:80  \
-v /etc/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
--restart=always deploy.deepexi.com/datasense-test/deepexi-belle-damo-nginx:v1.0.0

六.配置 https

1.上传证书

scp  /Users/qinyingjie/Downloads/www.qinyingjie.top_nginx/www.qinyingjie.top_bundle.crt root@43.139.90.182:/etc/nginxscp  /Users/qinyingjie/Downloads/www.qinyingjie.top_nginx/www.qinyingjie.top.key root@43.139.90.182:/etc/nginx

2.http 的配置

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;events {worker_connections 1024;
}http {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;tcp_nopush          on;tcp_nodelay         on;keepalive_timeout   65;types_hash_max_size 2048;include             /etc/nginx/mime.types;default_type        application/octet-stream;# Load modular configuration files from the /etc/nginx/conf.d directory.# See http://nginx.org/en/docs/ngx_core_module.html#include# for more information.include /etc/nginx/conf.d/*.conf;server {listen       80;server_name  qinyingjie.top;root         /usr/share/nginx/html;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location / {root   html;index  index.html index.htm;proxy_pass http://127.0.0.1:8080/;}location ~ .*\.(gif|jpg|jpeg|png|jfif|webp)$ {root  /kwan/;autoindex    on ;}error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2 default_server;
#        listen       [::]:443 ssl http2 default_server;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers PROFILE=SYSTEM;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        location / {
#        }
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }}

3.证书文件名称

www.qinyingjie.top_bundle.crt
www.qinyingjie.top.key

4.https 的配置

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;events {worker_connections 1024;
}http {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;tcp_nopush          on;tcp_nodelay         on;keepalive_timeout   65;types_hash_max_size 2048;include             /etc/nginx/mime.types;default_type        application/octet-stream;# Load modular configuration files from the /etc/nginx/conf.d directory.# See http://nginx.org/en/docs/ngx_core_module.html#include# for more information.include /etc/nginx/conf.d/*.conf;server {listen 80;#请填写绑定证书的域名server_name www.qinyingjie.top;#把http的域名请求转成httpsreturn 301 https://$host$request_uri;}server {#SSL 默认访问端口号为 443listen 443 ssl;#请填写绑定证书的域名server_name www.qinyingjie.top;#请填写证书文件的相对路径或绝对路径ssl_certificate  www.qinyingjie.top_bundle.crt;#请填写私钥文件的相对路径或绝对路径ssl_certificate_key www.qinyingjie.top.key;ssl_session_timeout 5m;#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;#请按照以下协议配置ssl_protocols TLSv1.2 TLSv1.3;ssl_prefer_server_ciphers on;location / {#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。#例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。root html;index index.html index.htm;proxy_pass http://127.0.0.1:8080/;}location ~ .*\.(gif|jpg|jpeg|png|jfif|webp)$ {root  /kwan/;autoindex    on ;}}}

5.验证

#检查配置是否正确(常用)
nginx -t

6.加载配置

nginx -s reload

7.查看日志

#全局查看
cat  /var/log/nginx/error.log#尾部查看
tail -f  /var/log/nginx/error.log

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

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

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

相关文章

Unity2D-URP基于ShaderGraph创建带粒子特效的激光光束

文章目录 创建Shader新建Node: UV新建Node: Split......参数说明 基于Shader创建Material创建Line创建粒子系统StartVFX创建粒子材质更改粒子系统的材质设置透明模式设置粒子效果创建一个Beam设置EndVFX效果预览激光光束管理脚本最终预览 创建Shader Create --> Shader Gra…

零信任、SASE还在因不标准的身份系统难对接而无法发挥真正力量?这份标准化的解决方案助您一臂之力

身份安全是网络安全的一个重要领域,旨在确保用户的身份安全可信,防止未经授权的访问和数据泄漏等问题。目前主流的信息安全趋势强调可持续验证、多源信任评估、动态防护、可持续数据防护、一体化安全审计等,特别是零信任、SASE等技术均以身份…

vue elementUI 自定义框组织树,选择select下拉组织树横行滑动条出现方法

背景&#xff1a;最近公司开发需要使用到组织树进行组织结构的选择&#xff0c;在开发途中遇到两个次组织树已超过外框&#xff0c;但超出部分不显示横向滑动条。 自定义组织树框代码如下&#xff1a; <el-row><el-col :span"20" style"padding: 0px…

《数据结构、算法与应用C++语言描述》-线索二叉树的定义与C++实现

_23Threaded BinaryTree 可编译运行代码见&#xff1a;GIithub::Data-Structures-Algorithms-and-Applications/_24Threaded_BinaryTree 线索二叉树定义 在普通二叉树中&#xff0c;有很多nullptr指针被浪费了&#xff0c;可以将其利用起来。 首先我们要来看看这空指针有多少…

Leetcode刷题之设计循环队列(C语言版)

Leetcode刷题之设计循环队列&#xff08;C语言版&#xff09; 一、题目描述二、题目示例三、题目解析Ⅰ、typedef structⅡ、MyCircularQueue* myCircularQueueCreate(int k)Ⅲ、bool myCircularQueueIsEmpty(MyCircularQueue* obj)Ⅳ、bool myCircularQueueIsFull(MyCircularQ…

P19 C++ 构造函数的成员初始化列表

目录 前言 01 如果不用成员列表如何初始化变量 02 成员列表初始化 03 为什么要使用成员列表初始化呢&#xff1f; 04 案例代码 前言 本期我们聊聊构造函数初始化列表。 你应该经常使用成员初始化列表&#xff0c;如果你不喜欢这种代码风格&#xff0c;建议你还是慢慢习惯吧…

立即修复计算机显示msvcp110.dll丢失问题!4个快速解决方法大揭秘

在计算机使用过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是“msvcp110.dll丢失”。这个错误通常会导致某些程序无法正常运行&#xff0c;给用户带来诸多不便。那么&#xff0c;当我们遇到这个问题时&#xff0c;应该如何进行修复呢&#xff1f;本文将…

搭建一个可以发送邮箱验证码的接口,内含前端处理 接口返回、请求处理

环境搭建 在node安装好的情况下&#xff08;一般vue环境有的node也有 没有可以使用winr回车输入node -v 有版本号则已经安装好 找一个空文件夹作为此项目文件夹 点击上面的地址栏输入cmd回车 输入npm init -y 再输入npm install nodemailer安装发送邮件的插件 环境配置 使用v…

vue3中toRef创建一个ref对象

为源响应式对象上的某个属性创建一个 ref对象, 二者内部操作的是同一个数据值, 更新时二者是同步的 区别ref: 拷贝了一份新的数据值单独操作, 更新时相互不影响 应用: 当要将 某个prop 的 ref 传递给复合函数时&#xff0c;toRef 很有用 父组件代码: <template><…

关于easy-es的聚合问题-已解决

es实体类&#xff1a; public class ChemicalES {IndexId(type IdType.CUSTOMIZE)private Long id;HighLightIndexField(fieldType FieldType.TEXT, analyzer "ik_max_word")private String name;IndexField(fieldType FieldType.KEYWORD)private List<Stri…

nginx 配置跨域(小皮面板)

本地开发的时候&#xff0c;前端请求后端&#xff0c;后端不能用域名请求&#xff0c;只能用端口模式&#xff0c;在小皮面板的话就是如下配置&#xff1a; 我的测试项目部署&#xff1a; 前端&#xff1a;http://localhost:8082 后端&#xff1a;http://localhost:8081 前端…

二百零八、Hive——HiveSQL异常:Select查询数据正常,但SQL语句加上group by查询数据为空

一、目的 在HiveSQL的DWD层中&#xff0c;需要对原始数据进行去重在内的清洗&#xff0c;结果一开始其他数据类型的清洗工作都正常&#xff0c;直到碰到转向比数据。 一般的SQL查询有数据&#xff0c;但是加上group by以后就没数据&#xff1b; 一般的SQL查询有数据&#xf…

Python实现WOA智能鲸鱼优化算法优化XGBoost分类模型(XGBClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…

uniapp基础-教程之HBuilderX基础常识篇02

uniapp创建项目时属性多为vue后缀&#xff1b;其中每个文件中都包含了三段式结构分别是template&#xff1b;script&#xff1b;style形势&#xff0c;分别是前端显示的画面以及js和css样式。 template&#xff1a;说大白话就是给别人看的&#xff0c;我们打开页面就可以看到的…

oracle查询开始时间和结束时间之间的连续月份

SELECT TO_CHAR(ADD_MONTHS(TO_DATE(2023-01,YYYY-MM), ROWNUM - 1), YYYY-MM) AS fmonth FROM DUALCONNECT BY ROWNUM < CEIL(MONTHS_BETWEEN(TO_DATE(2023-11, YYYY-MM), TO_DATE(2023-01,YYYY-MM))1)

附录11-math.h的常见方法

stdlib.h是做数学计算的头文件 目录 1 数学知识 1.1 弧度值/π 角度值/180 1.2 双曲函数 2 math.h 2.1 反余弦值 acos() 2.2 反正弦值 asin() 2.3 反正切值 atan() 2.4 两个数的反正切值 atan2() 2.5 向上取整 ceil() 2.6 余弦值 cos() 2.7 双曲余弦 c…

应用在触摸式面板中的电容式触摸芯片

触摸屏又称为“触控屏”、“触控面板”&#xff0c;是一种可接收触头等输入讯号的感应式液晶显示装置&#xff1b;当接触了屏幕上的图形按钮时&#xff0c;屏幕上的触觉反馈系统可根据预先编程的程式驱动各种连结装置&#xff0c;可用以取代机械式的按钮面板&#xff0c;并借由…

【JavaEE初阶】 HTTP协议和使用Fiddler抓包

文章目录 &#x1f38d;HTTP协议是什么&#xff1f;&#x1f340;应用层协议&#xff08;HTTP&#xff09;存在的意义&#x1f384;HTTP 协议的工作过程&#x1f334;HTTP 协议格式&#x1f333;Fiddler抓包工具的使用&#x1f6a9;如何抓HTTPS的包&#xff1f; &#x1f38b;抓…

【力扣】189. 轮转数组

【力扣】189. 轮转数组 文章目录 【力扣】189. 轮转数组1. 题目介绍2. 解法2.1 方法一&#xff1a;不太正规&#xff0c;但是简单2.2 方法二&#xff1a;使用额外的数组2.3 方法三&#xff1a;环状替换2.4 方法四&#xff1a;数组翻转 3. Danger参考 1. 题目介绍 给定一个整数…