免费源码资源站如何建设公司门户网站
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:21
当前位置: 首页 > news >正文
免费源码资源站,如何建设公司门户网站,网站的栏目是什么,电商推广是什么意思文章目录 Nginx服务优化一、隐藏Nginx版本号#xff0c;避免安全漏洞泄漏方法一#xff1a;通过修改配置文件方法二#xff1a;通过修改源码并重新编译安装 修改Nginx的用户和组修改用户与组 配置Nginx网页缓存时间配置Nginx连接保持的超时时间KeepAlive模式简介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常用模块HttpProxyModuleHttpRewriteModuleHttpSSLModuleHttpGzipModuleHttpCacheModule注意Nginx标准版中不直接包含名为HttpCacheModule的模块但可通过proxy_cache等指令实现缓存功能HttpAccessModule注意Nginx标准版中不直接称为HttpAccessModule但功能相似HttpUpstreamModule Nginx限流一、正常限制访问频率正常流量二、突发限制访问频率突发流量三、限制并发连接数 总结以及补充Nginx配置文件优化系统内核优化Nginx模块 Nginx服务优化 一、隐藏Nginx版本号避免安全漏洞泄漏 Nginx的版本号可能会暴露服务器的一些信息因此有时我们需要隐藏它以提高安全性。 方法一通过修改配置文件 编辑Nginx配置文件 使用vim或其他文本编辑器打开Nginx的配置文件 vim /usr/local/nginx/conf/nginx.conf关闭版本号显示 在http块中添加或修改以下行 server_tokens off;这行代码会告诉Nginx在响应头中不包含版本信息。 3. 重启Nginx服务 保存并退出编辑器后重启Nginx服务以使更改生效 systemctl restart nginx验证更改 使用curl命令检查响应头是否已不再包含版本信息 curl -I http://192.168.80.10方法二通过修改源码并重新编译安装 这种方法更为深入适用于需要自定义版本号或服务器标识的情况。 编辑源码文件 打开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重新编译和安装Nginx 在源码目录中运行以下命令以重新配置、编译和安装Nginx cd /opt/nginx-1.12.0/ ./configure –prefix/usr/local/nginx –usernginx –groupnginx –with-http_stub_status_module make make install启用版本号显示可选 如果你想在配置文件中再次启用版本号显示可以在nginx.conf中设置 server_tokens on;重启Nginx服务 保存所有更改并重启Nginx服务 systemctl restart nginx验证更改 再次使用curl命令检查响应头 curl -I http://192.168.80.10注意修改源码并重新编译安装是一个更为复杂的过程通常只在需要深度定制Nginx时采用。对于大多数情况简单地修改配置文件就足够了。 修改Nginx的用户和组 修改用户与组 为了提高Nginx服务器的安全性通常建议将Nginx运行在非root用户下。 编辑Nginx配置文件 使用vim或其他文本编辑器打开Nginx的配置文件 vim /usr/local/nginx/conf/nginx.conf修改用户与组 找到user指令并修改为指定的用户和组例如nginx user nginx nginx;如果该行被注释掉了请取消注释。 3. 重启Nginx服务 保存并退出编辑器后重启Nginx服务以使更改生效 systemctl restart nginx验证更改 使用以下命令查看Nginx进程的用户与组 ps aux | grep nginx你应该能看到主进程由root创建而子进程由指定的用户这里是nginx创建。 配置Nginx网页缓存时间 设置缓存时间可以加快网页的加载速度尤其是对于静态内容。 编辑Nginx配置文件 同样地打开Nginx的配置文件 vim /usr/local/nginx/conf/nginx.conf添加缓存设置 在适当的location块中添加或修改以下内容以设置特定文件类型的缓存时间 location ~ .(gif|jpg|jpeg|png|bmp|ico)$ {root html;expires 1d; # 设置缓存时间为1天 }注意这里我修正了文件类型中的一个小错误jepg应为jpeg。 3. 重启Nginx服务 保存并退出编辑器后再次重启Nginx服务 systemctl restart nginx验证缓存设置 在浏览器中访问一个设置了缓存的静态资源例如http://192.168.80.10/game.jpg然后查看响应头信息。你应该能看到类似以下的缓存控制指令 Cache-Control: max-age86400这表示资源已被缓存且在接下来的86400秒即1天内浏览器会直接从缓存中加载该资源而不会重新向Nginx服务器发送请求。 通过以上步骤你可以轻松地修改Nginx的用户与组并为静态资源设置合适的缓存时间从而提高服务器的安全性和性能。 配置Nginx连接保持的超时时间 Nginx连接超时设置 KeepAlive模式简介 HTTP的KeepAlive模式允许Web服务器在处理完一个请求后保持TCP连接处于打开状态。这样如果同一客户端发送后续请求服务器可以直接利用这个已打开的连接而无需重新建立新的连接。然而长时间保持连接会占用服务器资源如果过多可能会影响性能。 Nginx中的超时设置 编辑Nginx配置文件 使用vim或其他文本编辑器打开Nginx的配置文件 vim /usr/local/nginx/conf/nginx.conf设置KeepAlive超时 在http块中设置keepalive_timeout参数来控制KeepAlive连接的超时时间 keepalive_timeout 60 50;第一个参数60秒指定连接最多可以保持多长时间。设置为60秒可以确保与大多数浏览器的默认行为兼容。第二个参数50秒是可选的用于设置响应头Keep-Alive: timeouttime中的时间值。这可以帮助浏览器在达到指定时间后主动关闭连接。 如果将第一个参数设置为0则会禁用KeepAlive连接。 设置客户端请求头超时 设置client_header_timeout来指定客户端发送完整请求头的超时时间 client_header_timeout 15;如果在15秒内客户端没有发送完整的请求头Nginx将返回HTTP 408Request Timed Out错误。 4. 设置客户端请求体超时 设置client_body_timeout来指定客户端发送请求体的超时时间 client_body_timeout 15;如果在15秒内客户端没有发送任何请求体内容Nginx同样会返回HTTP 408错误。 5. 重启Nginx服务 保存并退出编辑器后重启Nginx服务以使更改生效 systemctl restart nginx通过合理设置Nginx的超时参数可以有效管理服务器资源提高服务的稳定性和性能。确保这些设置与您的应用需求和客户端行为相匹配以达到最佳效果。 配置Nginx日志切割 Nginx日志切割 为了管理Nginx日志文件的大小并防止日志文件过大我们可以使用日志切割脚本定期将旧的日志文件移动到其他位置并创建新的日志文件。以下是一个简单的日志切割脚本示例 创建日志切割脚本 编辑/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 {} \;赋予脚本执行权限 chmod x /opt/fenge.sh手动运行脚本测试 /opt/fenge.sh检查日志文件是否已正确切割和重命名。 4. 设置定时任务 使用crontab设置每天凌晨1点自动运行日志切割脚本 crontab -e添加以下行 0 1 * * * /opt/fenge.shLinux文件时间参数小知识 在Linux操作系统中每个文件都有三个重要的时间参数ctime、atime和mtime。 ctime (status time) 当文件的权限或属性被修改时ctime会更新。它并不表示文件的创建时间而是表示文件状态的最后更改时间。仅当文件的属性或权限发生变化时ctime才会更新而文件内容的更改不会影响ctime。 atime (access time) 每次访问文件例如读取文件内容时atime都会更新。这有助于跟踪文件的访问频率和最近的使用情况。 mtime (modification time) 当文件的内容被修改时mtime会更新。这是文件内容最后一次被更改的时间戳。与ctime不同更改文件的权限或属性不会影响mtime。 更改Nginx进程数以优化高并发性能 背景 在高并发场景下为了保证服务器能够快速响应用户请求并避免阻塞可能需要启动更多的Nginx工作进程。合理配置Nginx的工作进程数和CPU亲和性可以显著提升服务器的性能。 步骤 查看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修改工作进程数 根据服务器的CPU核数调整worker_processes参数。通常情况下这个数值可以设置为CPU总核数但一般不超过8个 worker_processes 2; # 修改为CPU的总核数设置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模块提供了网页内容的压缩功能有助于减少传输数据的大小节约网站带宽并提升用户的访问体验。 步骤 编辑Nginx配置文件 打开Nginx的配置文件 vim /usr/local/nginx/conf/nginx.conf启用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; # 指定压缩类型重启Nginx服务 保存并退出编辑器后重启Nginx服务以应用更改 systemctl restart nginx二、网页图片大小压缩 Nginx通过http_image_filter_module模块提供了图片处理功能可以实时缩放图片等。 步骤 安装依赖 安装gd-devel库这是http_image_filter_module模块所依赖的 yum install -y gd-devel重新编译Nginx 进入Nginx源码目录并添加http_image_filter_module模块然后重新编译安装 cd /opt/nginx-1.12.0/ ./configure --prefix/usr/local/nginx --usernginx --groupnginx --with-http_stub_status_module --with-http_image_filter_module make make install配置图片压缩 在Nginx配置文件的server块中添加图片压缩规则 location ~* \.(jpg|gif|png)\) {image_filter resize 200 200; # 按等比例缩小图像至指定大小 }测试配置 cd /usr/local/nginx/html 先将game.jpg文件传到/usr/local/nginx/html目录下 vim index.html …… img srcgame.jpg/#网页中插入图片 /body /html5.重启Nginx服务 systemctl restart nginx在Linux系统中打开火狐浏览器右击点查看元素 选择 网络 — 选择 HTML、WS、其他 访问 http://192.168.80.10 双击200响应消息查看响应头中包含 Content-Encoding: gzip 注意 Nginx的Gzip压缩功能虽然好用但是下面两类文件资源不太建议启用此压缩功能。 图片/视频类型资源 原因图片如jpg、png文件本身就会有压缩所以就算开启gzip后压缩前和压缩后大小没有多大区别所以开启了反而会白白的浪费资源。大文件资源 原因会消耗大量的cpu资源且不一定有明显的效果。 配置Nginx防盗链 配置步骤 编辑Nginx配置文件 打开Nginx的配置文件vim /usr/local/nginx/conf/nginx.conf添加防盗链规则 在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.jpg和error.png文件放到/usr/local/nginx/html目录下。编辑index.html文件添加图片链接 …… img srcgame.jpg/ /body /html更新/etc/hosts文件添加域名映射echo 192.168.80.10 www.xy101.com /etc/hosts盗链网站主机192.168.80.12配置 编辑index.html文件添加指向源站图片的链接 …… img srchttp://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的处理速度可以根据服务器的内存与服务负载调整FPMFastCGI Process Manager模块的参数。 配置步骤 编辑FPM主配置文件 打开PHP-FPM的主配置文件vim /usr/local/php/etc/php-fpm.conf确保pid参数指向正确的PID文件路径pid run/php-fpm.pid编辑FPM池配置文件 打开具体的FPM池配置文件例如www.confvim /usr/local/php/etc/php-fpm.d/www.conf调整FPM进程管理参数 根据服务器性能和应用需求调整以下参数 pm进程管理方式可选static或dynamic。dynamic表示动态管理进程数量。pm dynamicpm.max_children允许的最大子进程数。这个数值应根据服务器的内存大小和PHP脚本的资源消耗来设置。pm.max_children 100pm.start_servers动态模式下启动时默认开启的进程数。它应该在pm.min_spare_servers和pm.max_spare_servers之间。pm.start_servers 5pm.min_spare_servers动态模式下保持的最小空闲进程数。pm.min_spare_servers 2pm.max_spare_servers动态模式下保持的最大空闲进程数。pm.max_spare_servers 8重启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_servers、pm.min_spare_servers和pm.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_certificate和ssl_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但功能相似 功能访问控制限制对资源的访问。 使用方法 使用allow和deny指令定义允许或拒绝访问的规则。示例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 zoneone:10m rate1r/m;server {location /seckill.html {limit_req zoneone; # 应用限流维度proxy_pass http://lj_seckill;} }在这个配置中1r/m表示每分钟允许一个请求。如果Nginx还有其他请求未处理超出限制的请求将被拒绝。 二、突发限制访问频率突发流量 为了应对突发流量Nginx提供了burst和nodelay参数。burst允许在短时间内处理超过设定速率的请求数量而nodelay则指示Nginx立即处理这些突发的请求而不是延迟处理。 配置示例
定义限流维度并设置burst和nodelay参数
limit_req_zone \(binary_remote_addr zoneone:10m rate1r/m;server {location /seckill.html {limit_req zoneone burst5 nodelay; # 允许突发处理最多5个请求proxy_pass http://lj_seckill;} }在这个配置下Nginx会立即处理前五个突发请求之后的请求将按照漏桶算法慢慢处理。 三、限制并发连接数 Nginx使用ngx_http_limit_conn_module模块来限制并发连接数。通过limit_conn_zone和limit_conn指令可以设置单个IP和整个虚拟服务器的最大并发连接数。 配置示例 http {limit_conn_zone \)binary_remote_addr zonemyip:10m; # 单个IP的并发连接数限制limit_conn_zone \(server_name zonemyServerName: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_syncookies1开启SYN Cookies/etc/sysctl.confnet.ipv4.tcp_tw_reuse1允许TIME-WAIT状态的套接字重新用于新的TCP连接/etc/sysctl.confnet.ipv4.tcp_tw_recycle0禁用TIME-WAIT回收/etc/sysctl.confnet.ipv4.tcp_fin_timeout30修改MSL值/etc/sysctl.confnet.ipv4.tcp_keepalive_time1200TCP发送探测消息的频率/etc/sysctl.confnet.ipv4.ip_local_port_range“1024 65535”设置外向连接的端口范围/etc/sysctl.confnet.ipv4.tcp_max_syn_backlog8192设置SYN队列长度/etc/sysctl.confnet.ipv4.tcp_max_tw_buckets5000设置TIME-WAIT状态的最大连接数/etc/sysctl.confnet.core.somaxconn4096设置TCP端口监听的最大连接队列长度/etc/sysctl.confnet.ipv4.ip_forward1开启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限制请求速率模块
相关文章
-
免费域名网站phpphp能干嘛 wordpress
免费域名网站phpphp能干嘛 wordpress
- 技术栈
- 2026年03月21日
-
免费又实用的网站品牌营销的四大策略
免费又实用的网站品牌营销的四大策略
- 技术栈
- 2026年03月21日
-
免费友情链接网站wordpress 手机页面停
免费友情链接网站wordpress 手机页面停
- 技术栈
- 2026年03月21日
-
免费云服务器网站有哪些wordpress用oss还是七牛
免费云服务器网站有哪些wordpress用oss还是七牛
- 技术栈
- 2026年03月21日
-
免费在线图片设计制作生成器seo是什么职位的缩写
免费在线图片设计制作生成器seo是什么职位的缩写
- 技术栈
- 2026年03月21日
-
免费招聘网站哪个好苏州建网站提
免费招聘网站哪个好苏州建网站提
- 技术栈
- 2026年03月21日
