【网站架构部署与优化】Nginx优化

文章目录

  • Nginx服务优化
    • 一、隐藏Nginx版本号,避免安全漏洞泄漏
      • 方法一:通过修改配置文件
      • 方法二:通过修改源码并重新编译安装
    • 修改Nginx的用户和组
      • 修改用户与组
    • 配置Nginx网页缓存时间
    • 配置Nginx连接保持的超时时间
      • KeepAlive模式简介
      • Nginx中的超时设置
    • 配置Nginx日志切割
      • Nginx日志切割
      • Linux文件时间参数小知识
    • 更改Nginx进程数以优化高并发性能
      • 背景
      • 步骤
    • 配置Nginx网页压缩
      • 一、网页内容压缩
        • 步骤:
      • 二、网页图片大小压缩
        • 步骤:
      • 注意:
    • 配置Nginx防盗链
      • 配置步骤:
      • 网页准备:
        • Web源主机(192.168.80.10)配置:
        • 盗链网站主机(192.168.80.12)配置:
      • 验证防盗链配置:
    • FPM参数优化
      • 配置步骤:
      • 注意
    • Nginx常用模块
      • HttpProxyModule
      • HttpRewriteModule
      • HttpSSLModule
      • HttpGzipModule
      • HttpCacheModule(注意:Nginx标准版中不直接包含名为HttpCacheModule的模块,但可通过proxy_cache等指令实现缓存功能)
      • HttpAccessModule(注意:Nginx标准版中不直接称为HttpAccessModule,但功能相似)
      • HttpUpstreamModule
    • Nginx限流
      • 一、正常限制访问频率(正常流量)
      • 二、突发限制访问频率(突发流量)
      • 三、限制并发连接数
  • 总结以及补充
    • Nginx配置文件优化
    • 系统内核优化
    • Nginx模块

Nginx服务优化

一、隐藏Nginx版本号,避免安全漏洞泄漏

Nginx的版本号可能会暴露服务器的一些信息,因此有时我们需要隐藏它以提高安全性。

方法一:通过修改配置文件

  1. 编辑Nginx配置文件
    使用vim或其他文本编辑器打开Nginx的配置文件:
vim /usr/local/nginx/conf/nginx.conf
  1. 关闭版本号显示
    http块中添加或修改以下行:
server_tokens off;

这行代码会告诉Nginx在响应头中不包含版本信息。
3. 重启Nginx服务
保存并退出编辑器后,重启Nginx服务以使更改生效:

systemctl restart nginx
  1. 验证更改
    使用curl命令检查响应头是否已不再包含版本信息:
curl -I http://192.168.80.10

方法二:通过修改源码并重新编译安装

这种方法更为深入,适用于需要自定义版本号或服务器标识的情况。

  1. 编辑源码文件
    打开Nginx的源码文件nginx.h
vim /opt/nginx-1.12.0/src/core/nginx.h

修改以下两行以更改版本号和服务器类型:

#define NGINX_VERSION "1.1.1" // 修改为你想要的版本号
#define NGINX_VER "IIS/" NGINX_VERSION // 修改服务器类型,例如"IIS"
  1. 重新编译和安装Nginx
    在源码目录中运行以下命令以重新配置、编译和安装Nginx:
cd /opt/nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install
  1. 启用版本号显示(可选)
    如果你想在配置文件中再次启用版本号显示,可以在nginx.conf中设置:
server_tokens on;
  1. 重启Nginx服务
    保存所有更改并重启Nginx服务:
systemctl restart nginx
  1. 验证更改
    再次使用curl命令检查响应头:
curl -I http://192.168.80.10

注意:修改源码并重新编译安装是一个更为复杂的过程,通常只在需要深度定制Nginx时采用。对于大多数情况,简单地修改配置文件就足够了。

修改Nginx的用户和组

修改用户与组

为了提高Nginx服务器的安全性,通常建议将Nginx运行在非root用户下。

  1. 编辑Nginx配置文件
    使用vim或其他文本编辑器打开Nginx的配置文件:
vim /usr/local/nginx/conf/nginx.conf
  1. 修改用户与组
    找到user指令,并修改为指定的用户和组(例如nginx):
user nginx nginx;

如果该行被注释掉了,请取消注释。
3. 重启Nginx服务
保存并退出编辑器后,重启Nginx服务以使更改生效:

systemctl restart nginx
  1. 验证更改
    使用以下命令查看Nginx进程的用户与组:
ps aux | grep nginx

你应该能看到主进程由root创建,而子进程由指定的用户(这里是nginx)创建。

配置Nginx网页缓存时间

设置缓存时间可以加快网页的加载速度,尤其是对于静态内容。

  1. 编辑Nginx配置文件
    同样地,打开Nginx的配置文件:
vim /usr/local/nginx/conf/nginx.conf
  1. 添加缓存设置
    在适当的location块中添加或修改以下内容,以设置特定文件类型的缓存时间:
location ~ \.(gif|jpg|jpeg|png|bmp|ico)$ {root html;expires 1d; # 设置缓存时间为1天
}

注意:这里我修正了文件类型中的一个小错误(jepg应为jpeg)。
3. 重启Nginx服务
保存并退出编辑器后,再次重启Nginx服务:

systemctl restart nginx
  1. 验证缓存设置
    在浏览器中访问一个设置了缓存的静态资源(例如:http://192.168.80.10/game.jpg),然后查看响应头信息。你应该能看到类似以下的缓存控制指令:
Cache-Control: max-age=86400

这表示资源已被缓存,且在接下来的86400秒(即1天)内,浏览器会直接从缓存中加载该资源,而不会重新向Nginx服务器发送请求。

通过以上步骤,你可以轻松地修改Nginx的用户与组,并为静态资源设置合适的缓存时间,从而提高服务器的安全性和性能。

配置Nginx连接保持的超时时间

Nginx连接超时设置

KeepAlive模式简介

HTTP的KeepAlive模式允许Web服务器在处理完一个请求后保持TCP连接处于打开状态。这样,如果同一客户端发送后续请求,服务器可以直接利用这个已打开的连接,而无需重新建立新的连接。然而,长时间保持连接会占用服务器资源,如果过多,可能会影响性能。

Nginx中的超时设置

  1. 编辑Nginx配置文件
    使用vim或其他文本编辑器打开Nginx的配置文件:
vim /usr/local/nginx/conf/nginx.conf
  1. 设置KeepAlive超时
    http块中,设置keepalive_timeout参数来控制KeepAlive连接的超时时间:
keepalive_timeout 60 50;
  • 第一个参数(60秒)指定连接最多可以保持多长时间。设置为60秒可以确保与大多数浏览器的默认行为兼容。
  • 第二个参数(50秒)是可选的,用于设置响应头Keep-Alive: timeout=time中的时间值。这可以帮助浏览器在达到指定时间后主动关闭连接。
    如果将第一个参数设置为0,则会禁用KeepAlive连接。
  1. 设置客户端请求头超时
    设置client_header_timeout来指定客户端发送完整请求头的超时时间:
client_header_timeout 15;

如果在15秒内客户端没有发送完整的请求头,Nginx将返回HTTP 408(Request Timed Out)错误。
4. 设置客户端请求体超时
设置client_body_timeout来指定客户端发送请求体的超时时间:

client_body_timeout 15;

如果在15秒内客户端没有发送任何请求体内容,Nginx同样会返回HTTP 408错误。
5. 重启Nginx服务
保存并退出编辑器后,重启Nginx服务以使更改生效:

systemctl restart nginx

通过合理设置Nginx的超时参数,可以有效管理服务器资源,提高服务的稳定性和性能。确保这些设置与您的应用需求和客户端行为相匹配,以达到最佳效果。

配置Nginx日志切割

Nginx日志切割

为了管理Nginx日志文件的大小并防止日志文件过大,我们可以使用日志切割脚本定期将旧的日志文件移动到其他位置,并创建新的日志文件。以下是一个简单的日志切割脚本示例:

  1. 创建日志切割脚本
    编辑/opt/fenge.sh文件,添加以下内容:
#!/bin/bash
# Filename: fenge.shday=$(date -d "-1 day" "+%Y%m%d") # 获取前一天的日期
logs_path="/var/log/nginx"
pid_path="/usr/local/nginx/logs/nginx.pid"# 确保日志目录存在,如果不存在则创建
[ -d $logs_path ] || mkdir -p $logs_path# 移动并重命名前一天的访问日志文件
mv /usr/local/nginx/logs/access.log ${logs_path}/xy101.com-access.log-$day# 发送USR1信号给Nginx主进程,通知它重新打开日志文件
kill -USR1 $(cat $pid_path)# 删除30天前的日志文件
find $logs_path -mtime +30 -exec rm -rf {} \;
  1. 赋予脚本执行权限
chmod +x /opt/fenge.sh
  1. 手动运行脚本测试
/opt/fenge.sh

检查日志文件是否已正确切割和重命名。
4. 设置定时任务
使用crontab设置每天凌晨1点自动运行日志切割脚本:

crontab -e

添加以下行:

0 1 * * * /opt/fenge.sh

Linux文件时间参数小知识

在Linux操作系统中,每个文件都有三个重要的时间参数:ctimeatimemtime

  • ctime (status time)
    当文件的权限或属性被修改时,ctime会更新。它并不表示文件的创建时间,而是表示文件状态的最后更改时间。仅当文件的属性或权限发生变化时,ctime才会更新,而文件内容的更改不会影响ctime

  • atime (access time)
    每次访问文件(例如读取文件内容)时,atime都会更新。这有助于跟踪文件的访问频率和最近的使用情况。

  • mtime (modification time)
    当文件的内容被修改时,mtime会更新。这是文件内容最后一次被更改的时间戳。与ctime不同,更改文件的权限或属性不会影响mtime

更改Nginx进程数以优化高并发性能

背景

在高并发场景下,为了保证服务器能够快速响应用户请求并避免阻塞,可能需要启动更多的Nginx工作进程。合理配置Nginx的工作进程数和CPU亲和性可以显著提升服务器的性能。

步骤

  1. 查看CPU核数
    使用以下命令查看服务器的CPU物理核心数量:
cat /proc/cpuinfo | grep -c "physical id"

这个命令会输出服务器的CPU物理核心数。
2. 查看当前Nginx进程数
运行以下命令查看当前Nginx主进程中包含的子进程数量:

ps aux | grep nginx

这将显示Nginx的工作进程数。
3. 编辑Nginx配置文件
使用vim或其他文本编辑器打开Nginx的配置文件:

vim /usr/local/nginx/conf/nginx.conf
  1. 修改工作进程数
    根据服务器的CPU核数调整worker_processes参数。通常情况下,这个数值可以设置为CPU总核数,但一般不超过8个:
worker_processes  2;  # 修改为CPU的总核数
  1. 设置CPU亲和性(可选)
    如果希望进一步优化性能,可以通过设置worker_cpu_affinity参数将每个Nginx工作进程绑定到特定的CPU物理核心上。这样可以减少进程在不同核心间的切换,提高缓存命中率,从而提升性能:
worker_cpu_affinity 01 10;  # 当进程数为4时,可以设置为0001 0010 0100 1000

这里的数字是二进制表示,每一位对应一个CPU核心。例如,01表示第一个核心,10表示第二个核心。
6. 重启Nginx服务
保存并退出编辑器后,重启Nginx服务以使更改生效:

systemctl restart nginx
  • 设置worker_processes时,应考虑服务器的内存和CPU资源,避免设置过高导致资源竞争。
  • 使用worker_cpu_affinity时,应根据实际的CPU核心布局和负载情况进行调整。

配置Nginx网页压缩

一、网页内容压缩

Nginx通过ngx_http_gzip_module模块提供了网页内容的压缩功能,有助于减少传输数据的大小,节约网站带宽,并提升用户的访问体验。

步骤:
  1. 编辑Nginx配置文件
    打开Nginx的配置文件:

    vim /usr/local/nginx/conf/nginx.conf
    
  2. 启用Gzip压缩及相关优化
    http块中添加或修改以下配置:

    gzip on;  # 开启gzip压缩功能
    gzip_min_length 1k;  # 最小压缩文件大小
    gzip_buffers 4 16k;  # 压缩缓冲区设置
    gzip_http_version 1.1;  # 识别HTTP协议版本
    gzip_comp_level 5;  # 压缩比率设置
    gzip_vary on;  # 支持前端缓存服务器存储压缩页面
    gzip_disable "MSIE [1-6]\.";  # 禁用IE6及以下版本的gzip压缩
    gzip_types text/plain text/javascript text/css text/xml application/x-javascript application/xml application/x-httpd-php application/javascript application/json image/jpeg image/gif image/png;  # 指定压缩类型
    
  3. 重启Nginx服务
    保存并退出编辑器后,重启Nginx服务以应用更改:

    systemctl restart nginx
    

二、网页图片大小压缩

Nginx通过http_image_filter_module模块提供了图片处理功能,可以实时缩放图片等。

步骤:
  1. 安装依赖
    安装gd-devel库,这是http_image_filter_module模块所依赖的:

    yum install -y gd-devel
    
  2. 重新编译Nginx
    进入Nginx源码目录,并添加http_image_filter_module模块,然后重新编译安装:

    cd /opt/nginx-1.12.0/
    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_image_filter_module
    make && make install
    
  3. 配置图片压缩
    在Nginx配置文件的server块中添加图片压缩规则:

    location ~* \.(jpg|gif|png)$ {image_filter resize 200 200;  # 按等比例缩小图像至指定大小
    }
    
  4. 测试配置

    cd /usr/local/nginx/html
    先将game.jpg文件传到/usr/local/nginx/html目录下
    vim index.html
    ...... 
    <img src="game.jpg"/>#网页中插入图片
    </body>
    </html>
    

    5.重启Nginx服务

    systemctl restart nginx
    

在Linux系统中,打开火狐浏览器,右击点查看元素
选择 网络 —> 选择 HTML、WS、其他
访问 http://192.168.80.10 ,双击200响应消息查看响应头中包含 Content-Encoding: gzip

注意:

Nginx的Gzip压缩功能虽然好用,但是下面两类文件资源不太建议启用此压缩功能。

  • 图片/视频类型资源 原因:图片如jpg、png文件本身就会有压缩,所以就算开启gzip后,压缩前和压缩后大小没有多大区别,所以开启了反而会白白的浪费资源。
  • 大文件资源 原因:会消耗大量的cpu资源,且不一定有明显的效果。

配置Nginx防盗链

配置步骤:

  1. 编辑Nginx配置文件
    打开Nginx的配置文件:
    vim /usr/local/nginx/conf/nginx.conf
    
  2. 添加防盗链规则
    server块中针对图片文件类型(如jpg, gif, swf)添加以下配置:
    location ~* \.(jpg|gif|swf)$ {valid_referers none blocked *.xy101.com;if ($invalid_referer) {rewrite ^/ http://www.xy101.com/error.png;#return 403;}
    }
    
  • ~* \.(jpg|gif|swf)$ :这段正则表达式表示匹配不区分大小写,以.jpg 或.gif 或.swf 结尾的文件。
  • valid_referers :设置信任的网站,可以正常使用图片。
  • none:表示无Referer值的情况。直接访问url,而不使用任何网站或链接的跳转,Referer值是空的。
  • blocked:表示Referer值被防火墙进行伪装。
  • *.xy101.com:表示允许请求访问资源的主机名,可以使用通配符"*"号。

这段配置的作用是检查HTTP请求头中的Referer字段,如果请求不是从指定的主机名或IP地址发起的,则拒绝该请求,即进行 write 地址重写或返回 403 错误页面。
3. 重启Nginx服务
保存并退出编辑器后,重启Nginx服务以应用更改:

systemctl restart nginx

网页准备:

Web源主机(192.168.80.10)配置:
  • game.jpgerror.png文件放到/usr/local/nginx/html目录下。
  • 编辑index.html文件,添加图片链接:
     ……
    <img src="game.jpg"/>
    </body>
    </html>
    
  • 更新/etc/hosts文件,添加域名映射:
    echo "192.168.80.10 www.xy101.com" >> /etc/hosts
    
盗链网站主机(192.168.80.12)配置:
  • 编辑index.html文件,添加指向源站图片的链接:
     ……
    <img src="http://www.xy101.com/game.jpg"/>
    </body>
    </html>
    
  • 更新/etc/hosts文件,添加域名映射:
    echo "192.168.80.12 www.xy102.com" >> /etc/hosts
    

验证防盗链配置:

  • 在盗图网站主机上打开浏览器,访问http://www.xy102.com
  • 应该能看到原本应该显示的图片被替换成了error.png,这表明防盗链配置成功。

FPM参数优化

为了提高PHP的处理速度,可以根据服务器的内存与服务负载调整FPM(FastCGI Process Manager)模块的参数。

配置步骤:

  1. 编辑FPM主配置文件
    打开PHP-FPM的主配置文件:
    vim /usr/local/php/etc/php-fpm.conf
    
    确保pid参数指向正确的PID文件路径:
    pid = run/php-fpm.pid
    
  2. 编辑FPM池配置文件
    打开具体的FPM池配置文件(例如www.conf):
    vim /usr/local/php/etc/php-fpm.d/www.conf
    
  3. 调整FPM进程管理参数
    根据服务器性能和应用需求调整以下参数:
    • pm:进程管理方式,可选staticdynamicdynamic表示动态管理进程数量。
      pm = dynamic
      
    • pm.max_children:允许的最大子进程数。这个数值应根据服务器的内存大小和PHP脚本的资源消耗来设置。
      pm.max_children = 100
      
    • pm.start_servers:动态模式下启动时默认开启的进程数。它应该在pm.min_spare_serverspm.max_spare_servers之间。
      pm.start_servers = 5
      
    • pm.min_spare_servers:动态模式下保持的最小空闲进程数。
      pm.min_spare_servers = 2
      
    • pm.max_spare_servers:动态模式下保持的最大空闲进程数。
      pm.max_spare_servers = 8
      
  4. 重启PHP-FPM服务
    修改配置后,需要重启PHP-FPM服务以使更改生效:
    kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
    
    使用以下命令检查FPM是否正在监听9000端口:
    netstat -anpt | grep 9000
    

注意

  • 参数调整应根据实际服务器性能和应用负载进行测试和优化。
  • pm.max_children的值不宜设置过高,以免消耗过多内存资源。
  • 确保pm.start_serverspm.min_spare_serverspm.max_spare_servers的设置合理,以维持服务的稳定性和响应速度。

Nginx常用模块

HttpProxyModule

功能:作为反向代理服务器,将客户端请求转发到后端服务器。
使用方法

  • 使用proxy_pass指令指定后端服务器的地址和端口。
  • 可配置负载均衡(如proxy_pass http://backend;,其中backend是upstream模块定义的服务器组)。
  • 可启用缓存、SSL/TLS加密等。

HttpRewriteModule

功能:URL重写和重定向。
使用方法

  • 使用rewrite指令根据正则表达式匹配请求URI,并进行重写或重定向。
  • 示例:rewrite ^/some/(.*)$ /$1 last;/some/example重写为/example

HttpSSLModule

功能:支持SSL/TLS加密。
使用方法

  • 配置SSL证书、密码套件、协议版本等。
  • 使用listen 443 ssl;设置HTTPS监听端口,并通过ssl_certificatessl_certificate_key指定证书和密钥。

HttpGzipModule

功能:对响应进行压缩,减少传输数据量。
使用方法

  • 使用gzip on;启用gzip压缩。
  • 可配置压缩级别(如gzip_comp_level 6;)、压缩类型等。

HttpCacheModule(注意:Nginx标准版中不直接包含名为HttpCacheModule的模块,但可通过proxy_cache等指令实现缓存功能)

功能:缓存HTTP响应,减少服务器负载和响应时间。
使用方法

  • 使用proxy_cache_path定义缓存目录和缓存参数。
  • 在需要缓存的location中使用proxy_cache指令启用缓存。

HttpAccessModule(注意:Nginx标准版中不直接称为HttpAccessModule,但功能相似)

功能:访问控制,限制对资源的访问。
使用方法

  • 使用allowdeny指令定义允许或拒绝访问的规则。
  • 示例:allow 192.168.1.0/24; deny all; 仅允许来自192.168.1.0/24子网的访问。

HttpUpstreamModule

功能:实现负载均衡,管理后端服务器组。
使用方法

  • 使用upstream指令定义服务器组。
  • proxy_pass中引用该服务器组,Nginx会根据定义的算法(如轮询、最少连接等)分配请求。

Nginx限流

Nginx限流是通过限制用户请求的速度来防止服务器过载的一种策略。
限流主要有三种方式:正常限制访问频率、突发限制访问频率和限制并发连接数。
Nginx的限流实现主要基于漏桶算法。

一、正常限制访问频率(正常流量)

这种限流方式用于限制一个用户发送请求的频率。Nginx使用ngx_http_limit_req_module模块来实现这一功能,其原理是基于漏桶算法。
配置示例:

# 定义限流维度:一个用户一分钟只能发送一个请求
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/m;server {location /seckill.html {limit_req zone=one;  # 应用限流维度proxy_pass http://lj_seckill;}
}

在这个配置中,1r/m表示每分钟允许一个请求。如果Nginx还有其他请求未处理,超出限制的请求将被拒绝。

二、突发限制访问频率(突发流量)

为了应对突发流量,Nginx提供了burstnodelay参数。burst允许在短时间内处理超过设定速率的请求数量,而nodelay则指示Nginx立即处理这些突发的请求,而不是延迟处理。
配置示例:

# 定义限流维度,并设置burst和nodelay参数
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/m;server {location /seckill.html {limit_req zone=one burst=5 nodelay;  # 允许突发处理最多5个请求proxy_pass http://lj_seckill;}
}

在这个配置下,Nginx会立即处理前五个突发请求,之后的请求将按照漏桶算法慢慢处理。

三、限制并发连接数

Nginx使用ngx_http_limit_conn_module模块来限制并发连接数。通过limit_conn_zonelimit_conn指令,可以设置单个IP和整个虚拟服务器的最大并发连接数。
配置示例:

http {limit_conn_zone $binary_remote_addr zone=myip:10m;  # 单个IP的并发连接数限制limit_conn_zone $server_name zone=myServerName:10m;  # 整个虚拟服务器的并发连接数限制
}server {location / {limit_conn myip 10;  # 单个IP最多允许10个并发连接limit_conn myServerName 100;  # 整个虚拟服务器最多允许100个并发连接rewrite / http://www.lijie.net permanent;}
}

这个配置确保了单个IP和整个服务器的并发连接数不会超过设定的上限。

总结以及补充

Nginx配置文件优化

类别配置项描述
性能优化gzip on;开启网页压缩
性能优化expires 缓存时间;网页缓存
性能优化keepalive_timeout 服务端超时时间 客户端超时时间;连接保持超时
性能优化keepalive_requests连接保持最大请求次数
性能优化worker_processes(与服务器CPU数量相同或auto)工作进程数
性能优化worker_connections工作进程连接数
性能优化worker_rlimit_nofile工作进程打开文件数
性能优化worker_cpu_affinity工作进程静态绑核
性能优化use epoll;IO多路复用模型
性能优化sendfile on; tcp_nopush on; tcp_nodelay;启用内核复制模式
性能优化multi_accept on;连接优化,让工作进程可以尽可能多的接收连接请求
性能优化accept_mutex on;连接优化,以串行方式接入新连接,防止惊群问题
安全优化server_tokens off;隐藏版本号
安全优化valid_referers + if($invalid_referer)防盗链
安全优化deny 攻击主机的IP访问控制
安全优化use 用户名 组名;设置运行用户/组
安全优化limit_conn_zone + limit_conn限制连接数
安全优化limit_req_zone + limit_req限制请求速率

系统内核优化

文件配置项描述
/etc/security/limits.conf* soft nofile 65535进程打开文件数限制
/etc/security/limits.conf* hard nofile 65535进程打开文件数硬限制
/etc/security/limits.conf* soft nproc 65535打开的系统进程数限制
/etc/security/limits.conf* hard nproc 65535打开的系统进程数硬限制
/etc/sysctl.confnet.ipv4.tcp_syncookies=1开启SYN Cookies
/etc/sysctl.confnet.ipv4.tcp_tw_reuse=1允许TIME-WAIT状态的套接字重新用于新的TCP连接
/etc/sysctl.confnet.ipv4.tcp_tw_recycle=0禁用TIME-WAIT回收
/etc/sysctl.confnet.ipv4.tcp_fin_timeout=30修改MSL值
/etc/sysctl.confnet.ipv4.tcp_keepalive_time=1200TCP发送探测消息的频率
/etc/sysctl.confnet.ipv4.ip_local_port_range=“1024 65535”设置外向连接的端口范围
/etc/sysctl.confnet.ipv4.tcp_max_syn_backlog=8192设置SYN队列长度
/etc/sysctl.confnet.ipv4.tcp_max_tw_buckets=5000设置TIME-WAIT状态的最大连接数
/etc/sysctl.confnet.core.somaxconn=4096设置TCP端口监听的最大连接队列长度
/etc/sysctl.confnet.ipv4.ip_forward=1开启IP路由转发功能

Nginx模块

模块名称描述
http_stub_status_module访问状态统计模块
http_rewrite_moduleURL地址重写模块
http_gzip_module网页压缩模块
http_ssl_moduleHTTPS安全加密模块
http_access_module访问控制模块
http_cache_moduleWeb网页缓存模块
http_proxy_module代理转发模块
http_upstream_module负载均衡模块
http_limit_conn_module限制连接数模块
http_limit_req_module限制请求速率模块

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

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

相关文章

细说硫酸钙防静电地板的材质结构和优势特点

防静电地板有全钢基材的、硫酸钙基材的、铝合金基材的&#xff0c;在一些防静电要求、承载要求、铺设要求、铺装效果要求很高的场合&#xff0c;如银行、电信机房、移动机房、智能化办公室、部队指挥中心&#xff0c;通常都会使用硫酸钙防静电地板。那么什么是硫酸钙防静电地板…

计算机毕业设计 二手图书交易系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

计算机毕业设计 基于Python的医疗预约与诊断系统 Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

arthas-阿里远程诊断工具神器一定要掌握

文章目录 1. 背景介绍2. 安装下载3. 常用命令4. 常见案例4.1 案例一&#xff1a;使用logger 实时修改某个类的日志级别、4.2 案例二&#xff1a;使用watch 查看方法输入输出参数4.3 案例三&#xff1a;使用 Arthas 实现在线代码热更新 1. 背景介绍 通常&#xff0c;本地开发环…

文件上传、amrkdown编辑器

一、文件上传 这里我以图片为例&#xff0c;进行上传&#xff0c;上传到阿里云oss&#xff08;对象存在中&#xff09; 首先&#xff0c;我们先梳理一下&#xff0c;图片上传的流程 1、前端选择文件&#xff0c;提交文件 前端提交文件&#xff0c;我们可以使用ElementUI中的…

蓝队技能-应急响应篇Web内存马查杀JVM分析Class提取诊断反编译日志定性

知识点&#xff1a; 1、应急响应-Web内存马-定性&排查 2、应急响应-Web内存马-分析&日志 注&#xff1a;传统WEB类型的内存马只要网站重启后就清除了。 演示案例-蓝队技能-JAVA Web内存马-JVM分析&日志URL&内存查杀 0、环境搭建 参考地址&#xff1a;http…

有关 签到/签退 业务逻辑 的梳理与学习

导言 最近搞到了个签到管理&#xff0c;其中的业务逻辑感觉有点复杂(可能是我的方向不对),虽然是实现了&#xff0c;不过代码和逻辑很多&#xff0c;也有些乱&#xff0c;想趁着还记得逻辑来记录梳理一下&#xff0c;看看自己以后有没有更好的思路&#xff0c;或者有大佬有思路…

[C#]winform 使用opencvsharp实现玉米粒计数

【算法介绍】 这段代码是使用OpenCvSharp库&#xff08;OpenCV的C#封装&#xff09;对图像进行处理&#xff0c;主要流程包括图像的二值化、腐蚀操作、距离变换、轮廓检测&#xff0c;并在原图上标出检测到的轮廓位置及数量。下面是对代码的详细解读&#xff1a; 初始化&…

Ubuntu22.04安装GNSS数据处理软件GAMIT/GLOBK

由于微信公众号改变了推送规则&#xff0c;为了每次新的推送可以在第一时间出现在您的订阅列表中&#xff0c;记得将本公众号设为星标或置顶喔~ 手把手带您安装gamit/globk软件~ &#x1f33f;前言 受朋友之托&#xff0c;出一期Ubuntu22.04安装GNSS数据处理软件——gamit软件…

【论文笔记】Are Large Kernels Better Teacheres than Transformers for ConvNets

Abstract 本文提出蒸馏中小核ConvNet做学生时&#xff0c;与Transformer相比&#xff0c;大核ConvNet因其高效的卷积操作和紧凑的权重共享&#xff0c;使得其做教师效果更好&#xff0c;更适合资源受限的应用。 用蒸馏从Transformers蒸到小核ConvNet的效果并不好&#xff0c;原…

MySQL篇(存储过程 触发器 存储函数)(持续更新迭代)

目录 一、存储过程 1. 简介 2. 特点 3. 语法 3.1. 创建 3.2. 调用 3.3. 查看 3.4. 删除 4. 示例 二、变量 1. 简介 2. 系统变量 2.1. 查看系统变量 2.2. 设置系统变量 2.3. 演示示例 3. 用户定义变量 3.1. 赋值 方式一 方式二 3.2. 使用 3.3. 演示示例 4.…

Rust - 字符串:str 与 String

在其他语言中&#xff0c;字符串通常都会比较简单&#xff0c;例如 “hello, world” 就是字符串章节的几乎全部内容了。 但是Rust中的字符串与其他语言有所不同&#xff0c;若带着其他语言的习惯来学习Rust字符串&#xff0c;将会波折不断。 所以最好先忘记脑中已有的关于字…

华为---代理ARP简介及示例配置

目录 1. 概念 2. 前提条件 3. 使用环境 4. 工作过程 5. 优点 6. 缺点 7. 示例配置 7.1 示例场景 7.2基本配置 7.3 配置端口隔离 7.4 开启代理ARP 7.4.1 VLAN内代理ARP 7.4.2 VLAN间代理ARP 7.4.3路由式ARP代理 1. 概念 代理ARP&#xff08;Proxy ARP&#xff09;&…

C#使用实体类Entity Framework Core操作mysql入门:从数据库反向生成模型

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

matlab恢复默认窗口布局

1.点击主页&#xff0c;选择布局 2.选择默认&#xff0c;即可恢复到默认的窗口布局

LIN总线CAPL函数—— 设置LIN报文字节间隔长度(linSetInterByteSpace)

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…

利士策分享,如何培养良好的工作习惯?

利士策分享&#xff0c;如何培养良好的工作习惯&#xff1f; 在这个快节奏、高压力的职场环境中&#xff0c;培养良好的工作习惯不仅关乎个人职业发展的顺畅度&#xff0c; 更是提升工作效率、保持身心健康的关键。 以下是一些实用的建议&#xff0c;帮助你在日常工作中逐步构…

智慧水利采砂船在线监控平台:构建高效、智能的河道采砂监管体系

随着科技的不断发展&#xff0c;水利行业的智慧化转型也日益受到重视。智慧水利采砂船在线监控平台便是这一转型的重要成果之一。该平台主要服务于水政执法人员&#xff0c;针对取得河道采砂许可证的采砂公司及采砂船&#xff0c;实施在线自动监控&#xff0c;旨在提高监管效率…

iptables限制网速

1、使用hashlimit来限速 #从eth0网卡进入INPUT链数据&#xff0c;使用模块hashlimit 限制网速为100kb/s或2mb/s,超过限制的数据包会被DROP。OUTPUT链同理&#xff0c;mode为srcip&#xff0c;有4个mode选项: srcip&#xff08;默认匹配每个源地址IP&#xff0c;配置指定源地址…

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【上篇】

【STM32开发笔记】移植AI框架TensorFlow【上篇】 一、TFLM是什么&#xff1f;二、TFLM开源项目2.1 下载TFLM源代码2.2 TFLM基准测试说明2.3 TFLM基准测试命令 三、TFLM初步体验3.1 PC上运行Keyword基准测试3.2 PC上运行Person detection基准测试3.3 No module named numpy问题解…