Nginx实战 | 高性能HTTP和反向代理神器Nginx前世今生,以及它的“繁花之境”

专栏集锦,大佬们可以收藏以备不时之需:

Spring Cloud 专栏:http://t.csdnimg.cn/WDmJ9

Python 专栏:http://t.csdnimg.cn/hMwPR

Redis 专栏:http://t.csdnimg.cn/Qq0Xc

TensorFlow 专栏:http://t.csdnimg.cn/SOien

Logback 专栏:http://t.csdnimg.cn/UejSC

量子计算:

量子计算 | 解密著名量子算法Shor算法和Grover算法

AI机器学习实战:

AI机器学习实战 | 使用 Python 和 scikit-learn 库进行情感分析

AI机器学习 | 基于librosa库和使用scikit-learn库中的分类器进行语音识别

Python实战:

Python实战 | 使用 Python 和 TensorFlow 构建卷积神经网络(CNN)进行人脸识别

Spring Cloud实战:

Spring Cloud实战 |分布式系统的流量控制、熔断降级组件Sentinel如何使用

Spring Cloud 实战 | 解密Feign底层原理,包含实战源码

Spring Cloud 实战 | 解密负载均衡Ribbon底层原理,包含实战源码

1024程序员节特辑文章:

1024程序员狂欢节特辑 | ELK+ 协同过滤算法构建个性化推荐引擎,智能实现“千人千面”

1024程序员节特辑 | 解密Spring Cloud Hystrix熔断提高系统的可用性和容错能力

1024程序员节特辑 | ELK+ 用户画像构建个性化推荐引擎,智能实现“千人千面”

1024程序员节特辑 | OKR VS KPI谁更合适?

1024程序员节特辑 | Spring Boot实战 之 MongoDB分片或复制集操作

Spring实战系列文章:

Spring实战 | Spring AOP核心秘笈之葵花宝典

Spring实战 | Spring IOC不能说的秘密?

国庆中秋特辑系列文章:

国庆中秋特辑(八)Spring Boot项目如何使用JPA

国庆中秋特辑(七)Java软件工程师常见20道编程面试题

国庆中秋特辑(六)大学生常见30道宝藏编程面试题

国庆中秋特辑(五)MySQL如何性能调优?下篇

国庆中秋特辑(四)MySQL如何性能调优?上篇

国庆中秋特辑(三)使用生成对抗网络(GAN)生成具有节日氛围的画作,深度学习框架 TensorFlow 和 Keras 来实现

国庆中秋特辑(二)浪漫祝福方式 使用生成对抗网络(GAN)生成具有节日氛围的画作

国庆中秋特辑(一)浪漫祝福方式 用循环神经网络(RNN)或长短时记忆网络(LSTM)生成祝福诗词

在这里插入图片描述

目录

  • 1 Nginx 发展历史
  • 2 如何使用 Nginx
  • 3 详细配置 Nginx
    • 3.1 安装 Nginx
    • 3.2 配置文件结构
    • 3.3 配置虚拟主机
    • 3.4 配置代理
    • 3.5 配置 SSL/TLS
      • 3.5.1 准备 SSL/TLS 证书和私钥
      • 3.5.2 配置 Nginx 服务器块
      • 3.5.3 配置要点解释
      • 3.5.4 重启 Nginx 服务
      • 3.5.5 测试 SSL/TLS 配置
    • 3.6 配置缓存
    • 3.7 配置负载均衡
      • 3.7.1 健康检查
    • 3.8 配置访问控制
    • 3.9 配置日志
      • 3.9.1 访问日志
      • 3.9.2 错误日志
      • 3.9.3 日志滚动
    • 3.10 测试和优化
      • 3.10.1 负载测试
      • 3.10.2 性能测试
      • 3.10.3 配置优化
      • 3.10.4 代码级优化
      • 3.10.5 日志分析
      • 3.10.6 使用性能监控工具

1 Nginx 发展历史

Nginx 的历史可以追溯到 1990 年代末期,当时互联网开始迅速发展,传统的 HTTP 服务器如 Apache 开始显得力不从心,无法满足日益增长的访问量和并发请求。为了解决这个问题,Igor Sysoev 开始编写 Nginx,首个版本在 2004 年发布。Nginx 的设计理念是追求极高的性能和稳定性,同时还具有较低的内存消耗和资源占用,这使得它能够处理大量并发请求,非常适合于需要处理高负载的服务器环境。

  • 早期开发:Nginx最初是在Unix-like系统中运行的,使用C语言开发,并在一个BSD-like许可证下发布。它的设计受到了当时的网络环境以及Igor Sysoev作为系统管理员的工作经验的影响。
  • 版本迭代:随着时间的发展,Nginx逐渐增加了更多的功能,如SSL/TLS支持、虚拟主机、HTTP/2等,并且不断地对性能进行优化。
  • 社区和公司:2009年,Sysoev与别人合伙成立了Nginx公司,以支持Nginx的发展。2019年,Nginx公司被F5 Networks收购,成为其商业产品的一部分。
  • 创始人离职:2020年,Igor Sysoev宣布退出F5 Networks,以更多地关注家庭和个人项目。他在离职时得到了社区的高度评价和感谢,因为他的工作对Nginx的成功和互联网的发展有着深远的影响。

2 如何使用 Nginx

使用 Nginx 主要包括以下几个步骤:

  1. 下载和安装:首先,用户需要从 Nginx 的官方网站下载适合自己操作系统的 Nginx 版本。Nginx 提供了 Linux、Windows 等平台的版本。下载完成后,根据操作系统的不同,执行相应的安装程序。
  2. 配置:Nginx 的配置相对简洁。它使用基于文件系统的配置,主要通过修改配置文件来设置代理、缓存、负载均衡等。配置文件通常位于安装目录下的 nginx.conf,此外还包括用于设置静态资源服务、虚拟主机等的额外配置文件。
  3. 启动和停止:通过执行安装目录下的 nginx 命令来启动 Nginx 服务,而停止服务通常可以通过 nginx -s stop 或使用操作系统服务管理工具来实现。
  4. 测试:启动服务后,可以通过访问 http://localhost 或服务器 IP 地址来测试 Nginx 是否正常运行。
  5. 监控和维护:Nginx 提供了监控工具,比如 nginx -s status 来检查服务状态。此外,定期检查和更新软件,以及监控服务器性能和访问日志,对于维护 Nginx 服务是必要的。

3 详细配置 Nginx

配置 Nginx 是一个相对复杂的过程,下面将详细介绍如何配置 Nginx。

3.1 安装 Nginx

在 Linux 系统中,您可以使用包管理器来安装 Nginx。例如,在 Ubuntu 或 Debian 上,您可以使用以下命令:

sudo apt update
sudo apt install nginx

在 CentOS 或 RHEL 上,您可以使用以下命令:

sudo yum install epel-release
sudo yum install nginx

如果您需要从源代码编译 Nginx,可以执行以下命令:

wget http://nginx.org/download/nginx-1.21.3.tar.gz
tar zxvf nginx-1.21.3.tar.gz
cd nginx-1.21.3
./configure
make
sudo make install

3.2 配置文件结构

Nginx 的配置文件通常位于 /etc/nginx/ 或 /usr/local/nginx/conf/。主要配置文件是 nginx.conf,它包含了全局配置。此外,还有 sites-available、sites-enabled 和 conf.d 目录,这些目录包含了虚拟主机的配置文件。

3.3 配置虚拟主机

要配置一个虚拟主机,您需要在 sites-available 目录下创建一个配置文件,然后将其符号链接到 sites-enabled 目录。在配置文件中,您可以设置服务器监听的主机名、端口、文档根目录等。例如:

server {listen 80;server_name example.com www.example.com;root /var/www/example;index index.html index.htm;
}

3.4 配置代理

Nginx 可以配置为反向代理服务器,将请求转发到后端服务器。在配置文件中,您需要设置代理服务器的主机名和端口,以及如何处理请求。例如:

location / {proxy_pass http://backend-server:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

3.5 配置 SSL/TLS

配置 Nginx 以使用 SSL/TLS 是保护网站安全性和用户隐私的重要步骤。以下是一个基本的指南,用于在 Nginx 中配置 SSL/TLS。

3.5.1 准备 SSL/TLS 证书和私钥

在配置 Nginx 之前,您需要有一个有效的 SSL/TLS 证书和相应的私钥。您可以从证书颁发机构(CA)获得证书,或者使用 Let’s Encrypt 提供的免费证书。如果您选择 Let’s Encrypt,可以使用 certbot 工具自动获取和配置证书。

3.5.2 配置 Nginx 服务器块

在 Nginx 配置文件中,通常在 server 块内添加 SSL/TLS 配置。以下是一个示例配置:

server {listen 443 ssl;server_name example.com www.example.com;ssl_certificate /path/to/your/fullchain.pem;ssl_certificate_key /path/to/your/privatekey.pem;ssl_session_cache shared:SSL:1m;ssl_session_timeout  10m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;root /var/www/example;index index.html index.htm;
}

3.5.3 配置要点解释

  • listen 443 ssl;:这指定服务器在端口 443 上监听 SSL/TLS 连接。
  • ssl_certificate 和 ssl_certificate_key:这些指令指定 SSL/TLS 证书和私钥的路径。确保这些文件是正确的,并且服务器用户有权限读取它们。
  • ssl_session_cache 和 ssl_session_timeout:这些指令配置 SSL 会话缓存和超时设置。
  • ssl_ciphers:这个指令指定用于加密的 SSL 演算法。您应该选择强加密算法,并避免使用已弃用的算法。
  • ssl_prefer_server_ciphers on;:这告诉客户端优先使用服务器提供的加密套件。

3.5.4 重启 Nginx 服务

在更新配置文件后,您需要重启 Nginx 服务以使更改生效:

sudo systemctl restart nginx

或者,如果您不是使用系统服务管理器,可以使用以下命令:

sudo nginx -s restart

3.5.5 测试 SSL/TLS 配置

在重启服务后,您应该测试 SSL/TLS 配置是否正确。您可以使用 curl 命令来测试:

curl -I https://example.com

您应该看到返回的响应中包含 HTTP/2 200 状态码,以及 SSL/TLS 相关的头部信息,表明 SSL/TLS 已正确配置。
请注意,SSL/TLS 配置可能会因您的具体需求和服务器配置而有所不同。确保遵循最佳实践,并定期更新您的证书和私钥。

3.6 配置缓存

Nginx 可以通过 proxy_cache 模块来缓存后端服务器的响应。这需要确保您的 Nginx 编译时包含了 ngx_http_proxy_module 和 ngx_http_cache_module。大多数标准 Nginx 安装都包含这些模块。
以下是一个基本的 Nginx 缓存配置示例:

http {proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2 keys_zone=cache_zone:10m;upstream backend {server backend1.example.com;server backend2.example.com;}server {listen 80;location / {proxy_pass http://backend;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_cache cache_zone;proxy_cache_valid any;proxy_cache_min_uses 1;proxy_cache_max_uses 10;proxy_cache_disk_mode async;proxy_cache_exclude "*/charset/*.html";}}
}

在这个例子中:

  • proxy_cache_path 指令用于设置缓存的存储路径和大小。levels=1:2 表示缓存的存储层次,keys_zone=cache_zone:10m 表示缓存的键值存储在内存中的大小为 10MB。
  • upstream 定义了后端服务器组。
  • proxy_pass 指令将请求转发到后端服务器。
  • proxy_set_header 指令确保转发请求时携带必要的头部信息。
  • proxy_cache 指令启用缓存,并指定缓存的键值存储在哪个 keys_zone 中。
  • proxy_cache_valid 指令设置缓存的响应状态码,any 表示所有状态码的响应都可以缓存。
  • proxy_cache_min_uses 和 proxy_cache_max_uses 指令设置缓存的最低和最高使用次数。
  • proxy_cache_disk_mode 指令设置磁盘 I/O 模式,async 表示异步模式,可以提高性能。
  • proxy_cache_exclude 指令用于排除某些文件或目录的缓存。
    请注意,这只是一个基本的缓存配置示例。在实际应用中,您可能需要根据具体情况调整缓存路径、大小、过期时间等。此外,Nginx 还支持更高级的缓存配置,如缓存动态内容、使用不同的缓存策略等。

3.7 配置负载均衡

Nginx 的负载均衡功能是通过其内置的 upstream 模块实现的。以下是一个基本的 Nginx 负载均衡配置示例:

http {upstream myapp1 {server srv1.example.com;server srv2.example.com;server srv3.example.com;# 可以设置权重,如 server srv1.example.com weight=3;# 其他负载均衡方法还包括 least_conn, ip_hash 等。}server {listen 80;location / {proxy_pass http://myapp1;# 在这里可以设置更多的代理设置,如 proxy_set_header, proxy_connect_timeout 等。}}
}

在这个例子中,myapp1 是一个上游服务器组,它包含三个服务器:srv1.example.com、srv2.example.com 和 srv3.example.com。Nginx 将根据配置的负载均衡算法(默认是轮询)将请求分发到这些服务器上。

  • server 指令用于定义一个上游服务器,可以指定服务器的主机名或 IP 地址。
  • weight 指令用于设置服务器的权重,权重越高的服务器将接收更多的请求。
  • least_conn 指令用于启用最少连接数负载均衡算法,请求将被发送到当前连接数最少的服务器。
  • ip_hash 指令用于启用基于源 IP 的哈希负载均衡算法,来自同一 IP 的请求总是被代理到同一台服务器,这有助于保持用户的会话。

3.7.1 健康检查

Nginx 还提供了健康检查功能,以确保上游服务器组的健康状态。以下是一个包含健康检查的配置示例:

http {upstream myapp1 {server srv1.example.com;server srv2.example.com;server srv3.example.com;# 健康检查health_check {enable on;interval 3000; # 每隔 3 秒检查一次timeout 1000; # 超时时间unhealthy_threshold 3; # 不健康连续检查次数healthy_threshold 3; # 健康连续检查次数http_get http://example.com/health; # 检查的 URL}}server {listen 80;location / {proxy_pass http://myapp1;# 其他代理设置}}
}

在这个例子中,health_check 指令用于配置健康检查。如果服务器在连续三次检查中都未能通过健康检查,它将被标记为不健康,并将不再接收新的请求。当服务器恢复健康时,它将重新加入上游服务器组。
请注意,这些示例仅用于说明 Nginx 负载均衡的基本配置。在实际应用中,您可能需要根据具体情况调整服务器地址、负载均衡算法、健康检查配置等。此外,Nginx 还支持更高级的配置,如使用 upstream 模块中的 hash、url_hash、least_time 等指令,以及通过 map 模块进行更复杂的请求路由。

3.8 配置访问控制

在 Nginx 中,访问控制通常是通过 location 指令和 allow、deny 指令来实现的。这些指令可以定义哪些客户端(基于 IP 地址)被允许访问特定的位置(URL 或路径)。以下是一个简单的访问控制配置示例:

http {server {listen 80;location / {# 允许来自特定IP地址的访问allow 192.168.1.0/24;# 拒绝来自特定IP地址的访问deny all;}location /private/ {# 只允许来自特定IP地址的访问allow 192.168.1.10;# 拒绝其他所有IP地址的访问deny all;}}
}

在这个例子中:

  • allow 指令用于指定允许访问的 IP 地址或地址范围。例如,192.168.1.0/24 表示允许来自 IP 地址 192.168.1.0 到 192.168.1.255 的访问。
  • deny 指令用于指定拒绝访问的 IP 地址或地址范围。使用 all 表示拒绝所有不匹配 allow 指令的 IP 地址。
  • location 指令用于匹配特定的 URL 或路径。当请求的 URL 匹配到某个 location 时,相应的 allow 和 deny 指令将被应用。
    请注意,allow 和 deny 指令在同一个 location 中使用时,allow 指令的优先级高于 deny 指令。这意味着如果请求的 IP 地址同时匹配到 allow 和 deny,请求将被允许。
    此外,Nginx 还支持使用 geo 模块进行基于地理位置的访问控制,以及使用 map 模块进行更复杂的访问控制策略。这些功能可能需要额外的配置和模块支持。

3.9 配置日志

Nginx 的日志配置通常包括访问日志和错误日志。访问日志记录了客户端的请求信息,而错误日志记录了 Nginx 的错误信息。以下是如何配置这两种日志的示例:

3.9.1 访问日志

访问日志的配置通常在 http 块中进行,使用 log_format 指令定义日志的格式,然后使用 access_log 指令指定日志文件的路径和名称。

http {log_format combined_with_time '$remote_addr - $remote_user [$time_local] ''"$request" $status $body_bytes_sent ''"$http_referer" "$http_user_agent" "$http_x_forwarded_for"';server {listen 80;location / {# 其他配置...}access_log /var/log/nginx/access.log combined_with_time;}
}

在这个例子中:

  • log_format 指令定义了一个名为 combined_with_time 的日志格式,它包括了客户端的 IP 地址、用户、请求时间、请求方法、状态码、传输的字节数、引用来源、用户代理和 X-Forwarded-For 头部。
  • access_log 指令指定了日志文件的路径和名称,以及使用的日志格式。

3.9.2 错误日志

错误日志的配置通常在 http 块中进行,使用 error_log 指令指定日志文件的路径和名称。

http {# 其他配置...server {listen 80;location / {# 其他配置...}error_log /var/log/nginx/error.log;}
}

在这个例子中:

  • error_log 指令指定了错误日志文件的路径和名称。

3.9.3 日志滚动

Nginx 也支持日志滚动,这意味着当日志文件达到一定大小时,它会自动切换到下一个文件。这可以通过 logrotate 指令配置。

http {# 其他配置...server {listen 80;location / {# 其他配置...}access_log /var/log/nginx/access.log combined_with_time;error_log /var/log/nginx/error.log;logrotate {daily;rotate 7;postrotate/usr/sbin/nginx -s reopen;endscript;}}
}

在这个例子中:

  • logrotate 指令配置了日志的滚动策略,daily 表示每天滚动一次,rotate 7 表示保留最近的 7 个日志文件。
  • postrotate 指令用于在日志滚动后执行命令,这里是通过 nginx -s reopen 命令重新打开日志文件。
    请注意,这些示例仅用于说明 Nginx 日志配置的基本方法。在实际应用中,您可能需要根据具体情况调整日志格式、路径、滚动策略等。此外,Nginx 还支持更高级的日志配置,如使用 log_format 指令自定义日志格式,以及通过 map 模块进行更复杂的日志处理。

3.10 测试和优化

Nginx 的测试和优化可以通过多种方式进行,包括负载测试、性能测试、配置优化和代码级优化。以下是一些基本的步骤和方法:

3.10.1 负载测试

负载测试可以帮助你了解 Nginx 在高负载情况下的性能。可以使用工具如 Apache Bench(ab)或wrk来进行测试。
例如,使用 Apache Bench 进行测试的命令如下:

ab -n 1000 -c 100 http://your-nginx-server.com/

这个命令会向指定的 Nginx 服务器发送 1000 个请求,每次发送 100 个请求。

3.10.2 性能测试

性能测试可以帮助你了解 Nginx 的处理能力和响应时间。可以使用工具如 Siege 进行测试。
例如,使用 Siege 进行测试的命令如下:

siege -c 100 -r 1000 http://your-nginx-server.com/

这个命令会使用 100 个并发用户对服务器进行性能测试。

3.10.3 配置优化

优化 Nginx 的配置文件可以显著提高性能。以下是一些常见的优化建议:

  • 减少 HTTP 头部的传输大小。
  • 开启 GZIP 压缩。
  • 使用 expires 指令设置缓存过期时间。
  • 使用 limit_req 模块限制请求速率。
  • 使用 limit_conn 模块限制并发连接数。
    例如,以下配置可以减少 HTTP 头部的大小并开启 GZIP 压缩:
http {server {listen 80;location / {# 开启 GZIP 压缩gzip on;# 设置最小压缩文件大小gzip_min_length 1k;# 压缩缓冲区大小gzip_buffers 16 8k;# 设置压缩级别,1 压缩速度最快,9 压缩率最高,通常设置为4gzip_comp_level 4;# 对指定的 MIME 类型生效gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;}}
}

3.10.4 代码级优化

如果需要更深入的优化,可以修改 Nginx 的源代码。这通常涉及到内核级别的优化,需要具备相应的编程技能和知识。
例如,可以修改 Nginx 的 ngx_http_core_module 模块来优化 HTTP 请求的处理。

3.10.5 日志分析

分析 Nginx 的日志文件可以帮助你了解服务器的性能和问题所在。可以使用工具如 awk、grep 或 logstash 进行日志分析。
例如,使用 grep 查找所有 500 内部服务器错误的日志:

grep '500 Internal Server Error' /var/log/nginx/error.log

3.10.6 使用性能监控工具

使用性能监控工具如 Prometheus 和 Grafana 可以帮助你实时监控 Nginx 的性能指标,并进行相应的优化。
通过这些测试和优化方法,你可以了解 Nginx 的性能瓶颈,并采取相应的措施来提高其性能。请注意,优化应该是一个持续的过程,需要根据实际情况和需求进行调整。

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

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

相关文章

尺寸公差分析 -DTAS手机装配公差案例-国产-智能

小细节 大麻烦,公差仿真大改造 DTAS尺寸公差分析软件-国产-智能https://www.dtas-china.com/product.html 仿真要求说明:计算长边装配间隙G1-G6 步骤一:首先双面胶②放在一个工装中,外形定位,然后将后盖①放入到工…

第三代量子计算机交付,中国芯片开辟新道路,光刻机难挡中国芯

日前安徽本源量子宣布第三代超导量子计算系统正式上线,这是中国最先进的量子计算机,计算量子比特已达到72个,在全球已居于较为领先的水平,这对于中国芯片在原来的硅基芯片受到光刻机阻碍无疑是巨大的鼓舞。 据悉本源量子的第一代、…

C++互联网公司笔试攻略

C++互联网笔试大全 "C++互联网笔试大全" 是一个相对广泛的主题,因为它可以涵盖许多与C++编程语言和互联网相关技术的问题。以下是一些可能出现的笔试问题和相关知识点: C++基础知识: 指针和引用的区别 构造函数、析构函数、拷贝构造函数 动态内存分配(new/delete…

简单用PHP实现微信小程序的游戏功能

微信小程序的兴起,越来越多的开发者开始关注如何在小程序中实现游戏功能。PHP作为一种流行的后端语言,可以很好地与小程序进行搭配,实现游戏功能。下面将介绍如何使用PHP来实现微信小程序的游戏功能,并提供具体的代码示例。 建立…

数 据 分 析 1

1.使用Wireshark查看并分析靶机桌面下的capture.pcapng数据包文件,找到黑客的IP地址,并将黑客的IP地址作为Flag值(如:172.16.1.1)提交;172.16.1.41 查找:tcp.connection.syn 2.继续分析captu…

Peter算法小课堂—树的应用

开篇先给大家讲个东西&#xff0c;叫vector&#xff0c;有老师称之为“向量”&#xff0c;当然与数学中的向量不一样啊&#xff0c;所以我要称之为“长度可变的数组” vector 头文件&#xff1a;#include <vector> 用法&#xff1a;vector<int> d; 尾部增加元素…

自定义HBase负载均衡器MyCustomBalancer实现步骤与代码解析

目录 1.HBase默认负载均衡策略 1.1 负载均衡总体流程 1.2 不能触发负载均衡的情况 1.3 负载均衡算法 2.自定义的 HBase 负载均衡器的步骤 3.MyCustomBalancer的代码细节 3.1 balanceCluster 方法的作用 3.2balanceCluster 对数据的影响 3.3监控HBase的性能指标 3.3.…

全国区县与地级市和省会的距离,2021年,shp/excel格式,附高清示意图

基本信息. 数据名称: 全国区县与地级市和省会的距离 数据格式: shpexcel 数据时间: 2021年 数据几何类型: 面 数据坐标系: WGS84 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1djs_jl与所属地级市距离&#xff08;㎞&#xff09;2…

如何实现公网访问GeoServe Web管理界面共享空间地理信息【内网穿透】

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现&#xff0c;利用GeoServer可以方便地发布地图数据&#xff0c;允许用户对要素数据进行更新、删除、插入…

GIT - 清除历史 Commit 瘦身仓库

目录 一.引言 二.仓库清理 ◆ 创建一个船新分支 ◆ 提交最新代码 ◆ 双指针替换分支 三.总结 一.引言 由于项目运行时间较长&#xff0c;分支较多&#xff0c;且分支内包含很多不同的大文件&#xff0c;随着时间的推移&#xff0c;历史 Git 库的容量日渐增发&#xff0c…

开源分布式任务调度系统DolphinScheduler本地部署与远程访问

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问&#xff0c;结合内…

控制障碍函数(Control Barrier Function,CBF) 三、代码

三、代码实现 3.1、模型 这是一个QP问题&#xff0c;所以我们直接建模 这其实还是之前的那张图&#xff0c;我们把这个大的框架带入到之前的那个小车追击的问题中去&#xff0c;得到以下的一些具体的约束条件 CLF约束 L g V ( x ) u − δ ≤ − L f V ( x ) − λ V ( x ) …

LeetCode刷题记录:(4)重复的子字符串

leetcode传送通道 /** 重复字符串的next数组是有规律的 abcabc&#xff1a;-1 0 0 0 1 2 abcabcabc&#xff1a;-1 0 0 0 1 2 3 4 5 abcabcabcabc&#xff1a;-1 0 0 0 1 2 3 4 5 6 7 8 abcabcabcabg&#xff1a;-1 0 0 0 1 2 3 4 5 6 7 8 欸嘿&#xff0c;和上面一样&#xff…

Linux——firewalld防火墙(一)

一、Linux防火墙基础 Linux 的防火墙体系主要工作在网络层.针对TCP/P数据包实时过滤和限制.属于典型的包过滤防火墙&#xff08;或称为网络层防火墙)。Linux系统的防火墙体系基于内核编码实现&#xff0e;具有非常稳定的性能和高效率,也因此获得广泛的应用.在CentOS 7系统中几种…

FlinkAPI开发之自定义函数UDF

案例用到的测试数据请参考文章&#xff1a; Flink自定义Source模拟数据流 原文链接&#xff1a;https://blog.csdn.net/m0_52606060/article/details/135436048 概述 用户自定义函数&#xff08;user-defined function&#xff0c;UDF&#xff09;&#xff0c;即用户可以根据…

基于SpringBoot的毕业生实习与就业管理系统(系统+数据库+文档)

&#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目 希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;一、绪论 1. 研究背景 现在大家…

私域流量转化差,这些问题你都解决了吗?

一、流量不精准 这是一个常见而又经常被忽视的问题。许多企业在私域运营中面临转化率低下的问题&#xff0c;但有没有想过&#xff0c;这可能只是因为你吸引的流量与你的产品不匹配&#xff1f; 从公域引流到私域&#xff0c;数量并非唯一关键&#xff0c;精准度更是重中之重…

【计算机组成原理】计算机系统概论 常用计算机术语英文缩写汇总

集成电路 小规模集成电路 &#xff08;SSIC&#xff09;&#xff1a;Small Scale Integrated Circuits中规模集成电路 &#xff08;MSIC&#xff09;&#xff1a;Medium Scale Integrated Circuits大规模集成电路 &#xff08;LSIC&#xff09;&#xff1a;Large Scale Integr…

【Vue3+Ts项目】硅谷甄选 — 品牌管理+平台属性管理+SPU管理+SKU管理

一、品牌管理模块 1.1 静态模块搭建 使用到element-plus的card、button、table、pagination等组件&#xff1a;src/views/product/trademark/index.vue <template><el-card><!-- 卡片顶部添加品牌按钮 --><el-button type"primary" size&quo…

第十九章 调用Callout Library函数 - 将 $ZF(-5) 与多个库和许多函数调用一起使用

文章目录 第十九章 调用Callout Library函数 - 将 $ZF(-5) 与多个库和许多函数调用一起使用将 $ZF(-5) 与多个库和许多函数调用一起使用 第十九章 调用Callout Library函数 - 将 $ZF(-5) 与多个库和许多函数调用一起使用 将 $ZF(-5) 与多个库和许多函数调用一起使用 Method G…