NGINX 基础参数与功能

news2024/9/23 9:35:06

 章节

1 NGINX 的源码安装

2 NGINX 核心配置详解

3 NGINX 之 location 匹配优先级

4 NGINX 基础参数与功能 

目录

1 实现 Nginx 账户认证功能

1.1 创建htpasswd 认证文件

1.2 创建数据目录

1.3 指定认证文件路径

1.4 测试效果

2 定义重定向错误日志

2.1 指定错误日志访问路径

2.2 创建错误文件目录并增加自定义内容

2.3 测试效果

3 定义访问日志与错误日志的路径

3.1 指定日志路径

3.2 创建日志目录 并重新启动服务

3.3 访问网站查看日志是否正确加载

4 检测文件是否存在 try_files

4.1 参数介绍

4.2 语法格式

4.3 示例: 如果不存在页面, 就转到default.html页面

4.3.1 配置文件增加参数try_files

4.3.2  创建数据目录增加内容

4.3.3 实现效果 

4.4 示例二:使用 return 指令返回特定状态码

5 NGINX的长连接配置

5.1 请求连接数 keepalive_requests

5.1.1 参数配置与介绍

5.1.2 重启加载参数

5.1.3 测试效果

5.2 最大长连接时间 keepalive_timeout

5.2.1 参数配置

5.2.2 动图演示效果

6 作为下载服务器配置

6.1 相关指令介绍

6.2 自动索引参数的介绍与开启

6.2.1 配置autoindex参数

6.2.2 文件制作命令 dd

6.2.3 实现效果

6.2.4 网页时间同步

7 NGINX状态页面设置

7.1 定义状态页路径

7.2 创建状态目录 

7.3 实现效果

8 实现NGINX文件压缩功能

8.1 NGINX压缩功能介绍

8.2 参数介绍及解释

8.3 开启压缩功能(默认不开启的)

8.4 gzip_types 支持的压缩格式

8.5 实现效果


1 实现 Nginx 账户认证功能

ngx_http_auth_basic_module 模块提供此功能

示例

1.1 创建htpasswd 认证文件

[root@RHEL-9 nginx]# htpasswd -cm /usr/local/nginx/.htpasswd admin
New password: 
Re-type new password: 
Adding password for user admin
[root@RHEL-9 nginx]# htpasswd -m /usr/local/nginx/.htpasswd shuyan
New password: 
Re-type new password: 
Adding password for user shuyan

[root@RHEL-9 conf.d]# ls -a /usr/local/nginx/
.   client_body_temp  conf.d        html       logs        sbin       uwsgi_temp
..  conf              fastcgi_temp  .htpasswd  proxy_temp  scgi_temp


# -c: 创建新的 .htpasswd 文件。
# -m: 使用 MD5 加密算法。

1.2 创建数据目录

[root@RHEL-9 nginx]# mkdir  /data/web/shuyan
[root@RHEL-9 nginx]# echo shuyan > /data/web/shuyan/index.html

1.3 指定认证文件路径

[root@RHEL-9 nginx]# vim /usr/local/nginx/conf.d/location.conf
server {
    listen 80;
    server_name 192.168.239.20;
    index index.html;

    location /shuyan {
        root /data/web;
        auth_basic "login password";
        auth_basic_user_file  "/usr/local/nginx/.htpasswd";
    }
}

[root@RHEL-9 nginx]# systemctl restart nginx

1.4 测试效果

[root@RHEL-9 conf.d]# curl www.shuyan.com/shuyan/ -u shuyan
Enter host password for user 'shuyan':
shuyan

2 定义重定向错误日志

2.1 指定错误日志访问路径

[root@RHEL-9 nginx]# vim /usr/local/nginx/conf.d/location.conf
server {
    listen 80;
    server_name 192.168.239.20;
    index index.html;
    error_page 404 /40x.html;
    location /shuyan {
        root /data/web;
    }

    location = /40x.html {
        root /data/web/errorpage;

    }

}

状态码写404当然也可以写500 503 

2.2 创建错误文件目录并增加自定义内容

[root@RHEL-9 nginx]# mkdir -p /data/web/errorpage

[root@RHEL-9 nginx]# echo "<h1>error page</h1>" > /data/web/errorpage/40x.html
[root@RHEL-9 nginx]# vim /data/web/errorpage/40x.html
[root@RHEL-9 nginx]# systemctl restart nginx

2.3 测试效果

3 定义访问日志与错误日志的路径

3.1 指定日志路径

server {
    listen 80;
    server_name 192.168.239.20;
    root /data/web/html;
    index index.html;
    error_page 404 /40x.html;
    error_log /var/log/nginx_log/error.log;
    access_log /var/log/nginx_log/access.log;
    location /shuyan {
        root /data/web;
        auth_basic "login password";
        auth_basic_user_file  "/usr/local/nginx/.htpasswd";

    }

    location = /40x.html {
        root /data/web/errorpage;

    }

3.2 创建日志目录 并重新启动服务

[root@RHEL-9 conf.d]# mkdir  -p /var/log/nginx_log/
[root@RHEL-9 conf.d]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@RHEL-9 conf.d]# systemctl restart nginx.service 
[root@RHEL-9 conf.d]# ls /var/log/nginx_log/
access.log  error.log

3.3 访问网站查看日志是否正确加载

4 检测文件是否存在 try_files

4.1 参数介绍

try_files会按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如 果所有文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一 个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内 部500错误。

4.2 语法格式

try_files path1 path2 ... pathN [default|return status|internal|break];

4.3 示例: 如果不存在页面, 就转到default.html页面

4.3.1 配置文件增加参数try_files

server {
    listen 80;
    server_name 192.168.239.20;
    root /data/web/html;
    index index.html;
    error_page 404 /40x.html;
    error_log /var/log/nginx_log/error.log;
    access_log /var/log/nginx_log/access.log;
    try_files $uri $uri.html $uri/index.html /error/default.html;
    location /shuyan {
        root /data/web;
        auth_basic "login password";
        auth_basic_user_file  "/usr/local/nginx/.htpasswd";

    }

    location = /40x.html {
        root /data/web/errorpage;

    }

}

4.3.2  创建数据目录增加内容


[root@RHEL-9 conf.d]# mkdir  /data/web/html/error
[root@RHEL-9 conf.d]# echo this is error default > /data/web/html/error/default.html

[root@RHEL-9 conf.d]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[root@RHEL-9 conf.d]# systemctl restart nginx


[root@RHEL-9 conf.d]# echo this is default > /data/web/html/index.html

4.3.3 实现效果 

[root@RHEL-9 conf.d]# curl www.shuyan.com
this is default

# 删除目录看效果
[root@RHEL-9 conf.d]# rm -f /data/web/html/index.html 
[root@RHEL-9 conf.d]# curl www.shuyan.com
this is error default

4.4 示例二:使用 return 指令返回特定状态码

try_files $uri $uri/ @fallback;
location @fallback {
    return 404;
}

5 NGINX的长连接配置

5.1 请求连接数 keepalive_requests

5.1.1 参数配置与介绍

[root@RHEL-9 conf.d]# vim /usr/local/nginx/conf/nginx.conf
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65 60;
    keepalive_requests 2;

# 开启长连接后,返回客户端的会话保持时间为60s,
# 单次长连接累计请求达到指定次数请求或65秒就会被断开,
# 第二个数字60为发送给客户端应答报文头部中显示的超时时间设置为60s:
# 如不设置客户端将不显示超时时间。



Keep-Alive:timeout=60   #浏览器收到的服务器返回的报文
                        #如果设置为0表示关闭会话保持功能,将如下显示:
                        #Connection:close 浏览器收到的服务器返回的报文

5.1.2 重启加载参数

[root@RHEL-9 conf.d]# systemctl restart nginx.service

5.1.3 测试效果

5.2 最大长连接时间 keepalive_timeout

5.2.1 参数配置

5.2.2 动图演示效果

如动图所示,在3秒之后就断开链接了

6 作为下载服务器配置

ngx_http_autoindex_module 模块处理以斜杠字符 "/" 结尾的请求,并生成目录列表,可以做为下载服务 配置使用

6.1 相关指令介绍

autoindex on | off;             # 自动文件索引功能,默认off
autoindex_exact_size on | off;   # 计算文件确切大小(单位bytes),
                                 # off 显示大概大小(单位K、M),默认on
autoindex_localtime on | off ;  # 显示本地时间而非GMT(格林威治)时间,默认off
autoindex_format html | xml | json | jsonp;     # 显示索引的页面文件风格,默认html

limit_rate rate;              # 限制响应客户端传输速率(除GET和HEAD以外的所有方法),
                              # 单位B/s, bytes/second,                
                              #  默认值0,表示无限制,此指令由ngx_http_core_module提供

set $limit_rate 4k;          # 也可以通过变量限速,单位B/s,同时设置,此项优级高。

6.2 自动索引参数的介绍与开启

在我们平常寻找镜像源的时候会发现有这样一个界面,在NGINX内也拥有这样一个功能,此时需要再NGINX里增加一个参数autoindex

6.2.1 配置autoindex参数

指定目录 /data/web/download

[root@RHEL-9 conf.d]# vim /usr/local/nginx/conf.d/location.conf 
server {
    listen 80;
    server_name 192.168.239.20;
    root /data/web/html;
    index index.html;
    error_page 404 /40x.html;
    error_log /var/log/nginx_log/error.log;
    access_log /var/log/nginx_log/access.log;
    try_files $uri $uri.html $uri/index.html /error/default.html;
    location /shuyan {
        root /data/web;
        auth_basic "login password";
        auth_basic_user_file  "/usr/local/nginx/.htpasswd";

    }

    location = /40x.html {
        root /data/web/errorpage;

    }
    location /download {
        root /data/web;
        autoindex on;
    }

}

6.2.2 文件制作命令 dd

[root@RHEL-9 conf.d]# mkdir /data/web/download
[root@RHEL-9 conf.d]# dd if=/dev/zero of=/data/web/download/shuyan bs=1M count=100

# if 代表输入文件。如果不指定if,默认就会从stdin中读取输入。
# of 代表输出文件。如果不指定of,默认就会将stdout作为默认输出。
# bs 代表字节为单位的块大小。
# count 代表被复制的块数。
# /dev/zero 是一个字符设备,会不断返回0值字节(\0)。
单元大小代码
字节(1B)c
字节(2B)w
块(512B)b
千字节(1024B)k
兆字节(1024KB)M
吉字节(1024MB)G

[root@RHEL-9 conf.d]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[root@RHEL-9 conf.d]# systemctl restart nginx.service 

6.2.3 实现效果

浏览器访问指定页面查看

6.2.4 网页时间同步

autoindex_localtime 参数

本机时间而非GMT(格林威治)时间,默认off

在时间的时候会发现一个问题,发现显示时间与时间时间对不上。

autoindex_localtime 改为 on

增加参数之后时间对的上了

autoindex_exact_size (精确计算)
默认是开启按照字节的单位来换算的 (精确计算)

    location /download {
        root /data/web;
        autoindex on;
        autoindex_localtime on; #显示本机时间而非GMT(格林威治)时间,默认off
        autoindex_exact_size off;
    }

实现效果

7 NGINX状态页面设置

7.1 定义状态页路径

路径为 /data/web/status

[root@RHEL-9 conf.d]# vim /usr/local/nginx/conf.d/status.conf 
server {
    listen 80;
    server_name www.status.com;
    root /data/web;
    index index.html;
    location /status {
        stub_status;
        allow 192.168.239.1/32;
        allow 127.0.0.1;
        deny all;
    }
}

允许本机并拒绝所有

7.2 创建状态目录 

[root@RHEL-9 conf.d]# mkdir /data/web/status
[root@RHEL-9 conf.d]# systemctl restart nginx

7.3 实现效果

状态页参数说明

#状态页用于输出nginx的基本状态信息:

#输出信息示例:

Active connections: 2 

server accepts handled requests
 8 8 13 

               # 上面三个数字分别对应accepts,handled,requests三个值



Reading: 6 Writing: 179 Waiting: 106

Active connections: #当前处于活动状态的客户端连接数

                    #包括连接等待空闲连接数=reading+writing+waiting

accepts: #统计总值,Nginx自启动后已经接受的客户端请求连接的总数。

handled: #统计总值,Nginx自启动后已经处理完成的客户端请求连接总数

         #通常等于accepts,除非有因worker_connections限制等被拒绝的连接

requests: #统计总值,Nginx自启动后客户端发来的总的请求数


Reading: #当前状态,正在读取客户端请求报文首部的连接的连接数
            #数值越大,说明排队现象严重,性能不足
Writing: #当前状态,正在向客户端发送响应报文过程中的连接数,数值越大,说明访问量很大

Waiting: #当前状态,正在等待客户端发出请求的空闲连接数开启 keep-alive的情况下,
         #这个值等于active –(reading+writing)

8 实现NGINX文件压缩功能

8.1 NGINX压缩功能介绍

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

Nginx对文件的压缩功能是依赖于模块 ngx_http_gzip_module,默认是内置模块

8.2 参数介绍及解释

gzip on;

        作用: 启用 gzip 压缩功能。

        说明: 当客户端支持 gzip 压缩时,Nginx 会对响应进行压缩后再发送。

gzip_comp_level 5;

        作用: 设置 gzip 压缩级别。

        说明: 这个值介于 1 到 9 之间,数值越大压缩比越高,但压缩所需的时间也会增加,所需要的性能也就越多。这里设置为 5,是一个比较平衡的选择。

gzip_min_length 1k;

        作用: 设置最小响应长度以启用 gzip 压缩。

        说明: 只有响应体大小超过指定的字节数时才会进行 gzip 压缩。这里设置为 1KB,意味着只有当响应体大于等于 1KB 时才会进行压缩。

gzip_http_version 1.1;

        作用: 设置支持 gzip 压缩的 HTTP 版本。

        说明: 这里设置为 1.1,意味着只有 HTTP 1.1 的请求才会启用 gzip 压缩。

gzip_vary on;

        作用: 启用 Vary HTTP 头,告诉浏览器是否支持 gzip 压缩。

        说明: 当启用 gzip_vary 时,Nginx 会在响应头中添加 Vary: Accept-Encoding,这可以让缓存代理服务器根据客户端是否支持 gzip 压缩来决定是否缓存压缩后的响应。

gzip_types

        作用: 指定哪些 MIME 类型的内容会被 gzip 压缩。

8.3 开启压缩功能(默认不开启的)

[root@RHEL-9 conf.d]# vim /usr/local/nginx/conf/nginx.conf

    gzip_comp_level 5;
    gzip_min_length 1k;
    gzip_http_version 1.1;
    gzip_vary on;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/gif image/png;
    include /usr/local/nginx/conf.d/*.conf;

8.4 gzip_types 支持的压缩格式

注意gzip_types 必须是mime.type里支持的格式 

[root@RHEL-9 conf.d]# vim ../conf/mime.types

[root@RHEL-9 conf.d]# cat /var/log/messages > /data/web/html/big.html


[root@RHEL-9 conf.d]# ll -h /data/web/html/
总用量 744K
-rw-r--r--. 1 root root 738K  8月 16 16:19 big.html
drwxr-xr-x. 2 root root   26  8月 16 14:41 error
-rw-r--r--. 1 root root   16  8月 16 15:03 index.html

8.5 实现效果

[root@RHEL-9 conf.d]#  curl --head --compressed 192.168.239.20/index.html
HTTP/1.1 200 OK
Server: nginx/1.26.1
Date: Fri, 16 Aug 2024 08:36:28 GMT
Content-Type: text/html
Content-Length: 16
Last-Modified: Fri, 16 Aug 2024 07:03:34 GMT
Connection: keep-alive
Keep-Alive: timeout=60
ETag: "66bef9c6-10"
Accept-Ranges: bytes

[root@RHEL-9 conf.d]#  curl --head --compressed 192.168.239.20/big.html
HTTP/1.1 200 OK
Server: nginx/1.26.1
Date: Fri, 16 Aug 2024 08:36:39 GMT
Content-Type: text/html
Last-Modified: Fri, 16 Aug 2024 08:19:38 GMT
Connection: keep-alive
Keep-Alive: timeout=60
Vary: Accept-Encoding
ETag: W/"66bf0b9a-b85da"
Content-Encoding: gzip

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

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

相关文章

深度学习的量化和剪枝

一&#xff1a;背景 如果要将深度学习的AI模型部署到受限设备&#xff08;FPGA&#xff09;上&#xff0c;往往需要更小的存储需求和最低的计算复杂度。当然&#xff0c;还得保持一定的性能&#xff08;下降在能够接受的范围&#xff09;。受限设备资源的环境&#xff0c;一般是…

掌握ChatGPT写作艺术:从入门到精通的四个层次

这些周末我仔细研究了如何通过优化提示词提升ChatGPT输出内容的质量。 关于如何使用ChatGPT辅助我们的写作&#xff0c;我归纳了以下规律&#xff0c;希望能为你带来启发。 一、写作步骤 撰写一篇文章&#xff0c;思路上必须是从抽象到具体逐步深入。 首先我们需要明确写什么…

【数据结构与算法】冒泡排序

冒泡排序目录 一.冒泡排序原理二.图示三.冒泡排序具体实现四.冒泡排序升级版五.完整代码 一.冒泡排序原理 还是老样子,我们如何对这个进行排序呢? 冒泡排序的原理是,将两两进行比较,如果前面较大的我们就进行交换到后面. 然后再对交换后的这个和下一个进行比较,一轮过后,最大值…

spfa()算法(求最短路)

spfa算法是对bellman_ford算法的优化&#xff0c;大部分求最短路问题都可以用spaf算法来求。 注意&#xff1a; &#xff08;1&#xff09;如若图中有负权回路&#xff0c;不能用spfa算法&#xff0c;要用bellman_ford算法&#xff1b;若只有负权边&#xff0c;则可以用 spf…

Feign的基本使用

一、在项目中引入相关的依赖 创建两个微服务,分别为userservice、orderservice 现在需要在orderservie中查询用户相关的数据,所以需要使用feign进行远程调用userservice 1.1、在orderservice的pom.xml文件中添加下面的依赖 <dependency><groupId>org.springfram…

疫情居家办公系统--论文pf

TOC springboot394疫情居家办公系统--论文pf 第1章 绪论 1.1 课题背景 伴随着科技的进步&#xff0c;电子计算机已经成为人们日常生活不可或缺的办公工具。在这样的背景下&#xff0c;互联网技术被用于各个领域。为了能提高日常生活高效率&#xff0c;互联网信息技术性蓬勃…

Linux 网络套接字解析:实现网络通信

目录 一.网络基础1.协议2.OSI与TCP/IP模型3.网络通信流程4.IP与Mac地址 二.网络编程套接字1.端口号2.网络字节序3.tcp、udp协议4.socket编程5.sockaddr结构解析6.实现Udp_socket7.实现Windows与Linux通信8.Linux下远程执行指令9.实现tcp_socket10.守护进程 一.网络基础 1.协议…

IDEA中的 Maven 项目打包成Jar依赖,如何发布到本地仓库、远程仓库?

IDEA中的 Maven 项目打包成Jar依赖&#xff0c;如何发布到本地仓库、远程仓库&#xff1f; 默认读者都已经安装好 maven环境&#xff0c;如有不知道如何安装 maven 环境的&#xff0c;请先进行 maven 环境的安装学习教程&#xff01; 一、创建 maven 项目 按照图中方式&#xf…

python:画由两条抛物线所围成的图形

《高等数学》同济大学版 P338 编写 test_diff_2_area.py 如下 # -*- coding: utf-8 -*- """ 画由两条抛物线: ysqrt(x) , yx^2 所围成的图形的面积 """ import numpy as np import matplotlib.pyplot as plt from matplotlib.patches import…

[算法题]排序数组

题目链接: 排序数组 快速排序求解 两个重点: 1. 选取随机数做 key, 不止固定选最左边的数做 key, 避免在数据有序时退化成 O(n^2) 的时间复杂度, 取 key 下标公式: rand() % (end - begin 1) begin (加上begin偏移, 保证当前的 key 在当前的区间内) 2. 三段划分, 将区间划…

MySQL中处理JSON数据

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言 在大数据时代&#xff0c;处理和分析结构化与非结构化数据的能力对于企业的成功至关重要。MySQL作为一种广泛使用的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;在应对传统结构化数据方面表现出色。然…

【html+css 绚丽Loading】 - 000003 乾坤阴阳轮

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽Loading&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495…

python基础篇(15):闭包

在函数嵌套的前提下&#xff0c;内部函数使用了外部函数的变量&#xff0c;并且外部函数返回了内部函数&#xff0c;我们把这个使用外部函数变量的内部函数称为闭包。 1 简单闭包 def outer(logo):def inner(msg):print(f"<{logo}>{msg}<{logo}>")retu…

yolov5网络初始化问题

当你打印detect层的三个特征层时&#xff0c;发现有三种不同的长和宽&#xff0c;如下图所示&#xff1a; 我提出三个问题&#xff1a; 为什么不一样呢&#xff0c;输入有什么含义吗&#xff1f; 为什么网络初始化四次&#xff08;forward)&#xff1f; 下面来逐个击破 1. torc…

LeetCode - LCR 146- 螺旋遍历二维数组

LCR 146题 题目描述&#xff1a; 给定一个二维数组 array&#xff0c;请返回「螺旋遍历」该数组的结果。 螺旋遍历&#xff1a;从左上角开始&#xff0c;按照 向右、向下、向左、向上 的顺序 依次 提取元素&#xff0c;然后再进入内部一层重复相同的步骤&#xff0c;直到提取完…

模型训练坎坷路--逐步提升模型准确率从40%到90%+

文章目录 〇、前言一、更改学习率1.原理&#xff1a;欠拟合需要减小学习率2.效果-->有用&#xff01; 二、更改训练批次batch_size1.原理&#xff1a;更大的批量大小时&#xff0c;梯度估计更加精确2.效果-->有点用 三、更改数据预处理方式1.原理&#xff1a;数据可能没有…

【微服务】springboot 整合表达式计算引擎 Aviator 使用详解

目录 一、前言 二、表达式计算框架概述 2.1 规则引擎 2.1.1 什么是规则引擎 2.1.2 规则引擎用途 2.1.3 规则引擎使用场景 2.2 表达式计算框架 2.2.1 表达式计算框架定义 2.2.2 表达式计算框架特点 2.2.3 表达式计算框架应用场景 2.3 表达式计算框架与规则引擎异同点 …

二叉树练习习题集一(Java)

1. 思路&#xff1a; 就是让左孩子和右孩子进行交换&#xff0c;这里需要一个中间变量用来记录&#xff0c;然后完成交换。如果进行优化则添加当左孩子和右孩子都为null时直接返回。 class Solution {public TreeNode invertTree(TreeNode root) {TreeNode tmpnull;//用来进行…

C++适配windows和linux下网络编程TCP简单案例

C网络编程 网络协议是计算机网络中通信双方必须遵循的一套规则和约定&#xff0c;用于实现数据的传输、处理和控制。这些规则包括了数据格式、数据交换顺序、数据处理方式、错误检测和纠正等。网络协议是使不同类型的计算机和网络设备能够相互通信的基础&#xff0c;是网络通信…

PDF转markdown工具:magic-pdf

1. magic-pdf 环境安装 conda create -n MinerU python3.10 conda activate MinerU pip install boto3>1.28.43 -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip install magic-pdf[full]0.7.0b1 --extra-index-url https://wheels.myhloli.com -i https://pypi.tuna.t…