五、Linux网络服务-Apache优化
1.请写出工作中常见的Apache优化策略
Apache服务器优化是提升网站响应速度和稳定性的重要手段。在工作中,常见的Apache优化策略包括以下几个方面:
1. 启用压缩技术
- Gzip压缩:使用Gzip压缩技术可以减少服务器传输的数据量,从而提高网页加载速度。Gzip压缩是Web服务器中最常用的压缩技术之一,可以在Apache配置文件中启用。
- 配置选项:在Apache的配置文件(如
httpd.conf
)中,通过添加相关指令来启用Gzip压缩,并指定需要压缩的文件类型(如HTML、CSS、JavaScript等)。
2. 调整KeepAlive参数
- KeepAlive功能:启用KeepAlive可以减少TCP连接的建立和关闭次数,因为每个TCP连接可以处理多个HTTP请求。这在高并发场景下尤为有用。
- 参数调整:通过调整
KeepAliveTimeout
(保持连接的最大时间)和MaxKeepAliveRequests
(一个连接内允许的最大请求数)等参数来优化KeepAlive的性能。
3. 使用缓存技术
- 静态文件缓存:启用静态文件缓存可以减少对静态资源(如图片、JavaScript文件、CSS文件等)的重复请求。可以使用Apache的
mod_cache
和mod_disk_cache
等模块来实现。 - 页面缓存:通过配置Apache的缓存头信息(如
Expires
和Cache-Control
),可以告诉浏览器缓存页面内容,从而减少对服务器的请求。
4. 调整工作模式和线程池参数
- 工作模式:Apache支持多种工作模式(如Prefork、Worker、Event等),每种模式适用于不同的场景。根据服务器的硬件配置和网站的特点选择合适的工作模式。
- 线程池参数:在Worker和Event模式下,可以通过调整线程池的大小和最大请求数量等参数来优化性能。
5. 禁用不必要的模块
- 减少内存消耗:Apache默认加载了很多模块,但并非所有模块都是必需的。通过禁用不必要的模块,可以减少内存消耗和加载时间,从而提高性能。
- 编辑配置文件:在Apache的配置文件(如
httpd.conf
或modules.conf
)中,通过注释掉不必要的LoadModule
指令来禁用模块。
6. 使用CDN加速
- CDN服务:CDN(内容分发网络)可以将网站的静态资源分布到多个节点上,从而加快用户访问速度。使用CDN服务可以显著降低服务器的负载和响应时间。
7. 更新Apache到最新版本
- 版本更新:Apache不断发布新版本以修复已知漏洞和引入新功能。定期更新Apache到最新版本可以确保服务器的安全性和性能。
8. 隐藏Apache版本号
- 安全性提升:隐藏Apache的版本号可以防止黑客通过查询版本号来找到潜在的漏洞进行攻击。
- 配置修改:在Apache的配置文件中修改相关指令以隐藏版本号。
9. 防盗链
- 防止资源被盗用:防盗链可以防止其他网站盗链本站点的图片或视频等资源,从而减少服务器的负载和带宽消耗。
- 配置选项:在Apache的配置文件中通过添加相关指令来实现防盗链功能。
10. 日志的轮替
11. 美化错误页面
12.禁止解析PHP
综上所述,Apache的优化策略涉及多个方面,包括启用压缩技术、调整KeepAlive参数、使用缓存技术、调整工作模式和线程池参数、禁用不必要的模块、使用CDN加速、更新Apache到最新版本、隐藏Apache版本号和防盗链等。通过实施这些优化策略,可以显著提升Apache服务器的性能和安全性。
参考:设置Apache的日志轮替和切割规则,防止日志过大
美化错误页面,将错误页面重定向到首页或指定页面
屏蔽Apache的版本等信息,防止别人获取Apache的相应版本
配置静态缓存,减少对服务器的访问压力
禁止解析指定目录下的页面程序,比如upload,禁止解析用户上传的脚本文件
2.有哪些技术可以提高网站的安全和效率?
CDN(Content Delivery Network,内容分发网络)是一种分布式的网络架构,通过部署在全球各地的多个服务器节点,将内容快速地传送给用户。CDN技术旨在提高网站的访问速度、可用性和安全性。
CDN的工作原理如下:
-
缓存:CDN节点会缓存静态内容,如图片、CSS、JavaScript文件等,将其存储在离用户较近的服务器上。当用户请求内容时,CDN会将缓存在节点上的静态内容直接返回给用户,而不用每次都从源服务器请求内容,从而提高访问速度。
-
路由选择:当用户发起请求时,CDN会根据用户的IP地址,选择离用户最近的节点来响应请求。通过就近接入,可以减少网络延迟和传输时间,提高访问速度。
-
负载均衡:CDN会根据节点的负载情况,将用户请求分发到负载较低的节点上,以平衡服务器的负载和提高可用性。
-
动态请求转发:对于动态内容,CDN节点会将请求转发给源服务器进行处理,然后将响应的内容缓存起来,以便下次有相同请求时可以直接返回缓存内容,提高访问速度。
-
安全防护:CDN可以提供一些安全防护措施,如DDoS攻击防护、SSL加密、WAF(Web应用防火墙)等,保护网站免受恶意攻击。
利用CDN技术,网站可以将静态资源部署到全球各地的节点上,使用户能够更快地访问这些内容。同时,CDN还可以减轻源服务器的负载,提高网站的可用性和安全性。
六、Linux网络服务-Nginx配置
1.Apache和Nginx各有什么优缺点,应该如何选择?
Apache的优缺点
优点:
Apache的rewrite功能比nginx的要强大
模块非常多,基本想要的功能都能找到模块
存在时间较长,文献较全,bug也相对较少
动静态解析都超稳定
缺点:
由于工作模式是同步阻塞型,导致资源消耗较高,并发能力较差
Nginx的优缺点
优点:
轻量级服务,比Apache占用更少的内存及资源
并发能力强,nginx 处理请求是异出非阻塞的,而apache 则是阻塞型的,在高并发下nginx能保持低资源低消耗高性能
高度模块化的设计,编写模块相对简单
社区活跃,各种高性能模块产出迅速
缺点:
动态处理上需要使用fastcgi连接PHP的FPM服务,相比Apache不占优势
Apache和Nginx的选择
Nginx 适合做静态处理,简单,效率高
Apache 适合做动态处理,稳定,功能强
并发较高的情况下优先选择Nginx,并发要求不高的情况下两者都可以,规模稍大的
可以使用Nginx作为反向代理,然后将动态请求负载均衡到后端Apache上。
2.为什么Nginx的并发能力强,资源消耗低?
同步和异步:
同步:小明收到快递将送达的短信,在楼下一直等到快递送达
异步:小明收到快递将送迁的短信,小明不会下楼去取,而是快递小哥到楼下后,打电话通知小明,然后小明楼取快递
阻塞和非阻塞
阻塞:小明收到快递即将送达的信息后,什么事都不做,一直专门等快递
非阻塞:小明收到快递即将送达的信息后,等快递的时候,还一边敲代码边听歌,等着快递送达的消息。
Apache是同步和阻塞,Nginx是异步和非阻塞
答案参考
Nginx以异步非阻塞方式工作
客户端发送request,服务器分配work进程来处理
能立即处理完的,处理后work进程释放资源,进行下一个request的处理
不能立即处理完的work进程注册返回事件,然后接着去处理其他request
当之前的request结果返回后,触发返回事件,由空闲work进程接着处理,通过这种快速处理,快速释放请求的方式,达到同样的配置可以处理更大并发量的目的
七、Linux网络服务-Nginx进阶
1.写出几个Nginx的常用模块,并描述其功能
http_ssI_module:实现服务器加密传输的模块,部署完成后可使用https://协议进行数据传输,保证数据传输过程的安全.
http_image_filter_module:
通过该模块可以实现图片裁剪,将过大的图片裁剪为指定大小的图片,生成缩略图,保证传输速率,该选项默认不开启,需要人为指定
image_filter resize $h $w;
http_rewrite_module:
Nginx的地址重写模块,功能同Apache的一样,可以实现通过正则匹配来完成条件判断,然后进行域名或url的重写。例如:多域名、http -> https
http_proxy_module:
Nginx的反向代理功能,由于Nginx的高并发特性,很多时候我们都选择使用Nginx作为网站的前置服务器,一般会和upstream模块一起使用,完成压力分摊工作。
http_upstream_module
Nginx的负载均衡模块,一般和http_proxy模块一起使用,用来对后台服务器的任务调度及分配,分配原则可以通过算法进行控制。常见模式: Nginx+Apache、Nginx+Tomcat
2.请解释Nginx是如何连接PHP进行页面解析的
Nginx是一个高性能的Web服务器,它可以通过多种方式与PHP进行页面解析。
-
FastCGI:Nginx可以通过FastCGI协议与PHP-FPM(FastCGI Process Manager)进行通信。PHP-FPM是一个单独的进程管理器,将PHP解析器与Nginx服务器分离。当Nginx收到一个来自客户端的请求时,它会将请求发送给PHP-FPM进程池中的一个空闲进程来处理。PHP-FPM进程将解析PHP代码并生成HTML响应,然后将响应发送回Nginx,最后由Nginx将响应返回给客户端。
-
PHP插件:Nginx也可以通过加载PHP插件来直接解析PHP代码。这种方式需要在Nginx的配置文件中启用PHP插件,并配置正确的路径和参数。当Nginx收到一个PHP请求时,它会调用PHP插件来解析PHP代码并生成HTML响应。然后由Nginx将响应返回给客户端。
无论是使用FastCGI还是PHP插件,Nginx与PHP之间的连接是通过网络套接字进行的。Nginx将请求发送给PHP解析器,PHP解析器将生成的响应发送回Nginx,然后由Nginx将响应返回给客户端。这种方式可以有效地将动态生成的内容与静态文件一起提供给客户端,并提供高性能和可扩展性的Web解决方案。
1.Nginx支持fastCGI功能(默认支持)
2.PHP编译时开启FPM服务(编译时指定)
3.在Nginx配置文件中添加匹配规则(匹配后缀是php)
3.请描述Nginx和Tomcat之间的数据传输过程
当请求到达Nginx服务器时,Nginx作为反向代理服务器会首先接收到该请求。然后,Nginx会根据配置文件中的规则将请求转发给后端的Tomcat服务器。
数据传输的过程如下:
- 客户端发送请求到Nginx服务器。
- Nginx服务器接收到请求并根据配置文件中的规则确定将请求转发给哪个Tomcat服务器。
- Nginx向Tomcat服务器发起连接,并将客户端的请求内容按照HTTP协议重新打包并发送给Tomcat服务器。
- Tomcat服务器接收到请求,并解析HTTP协议中的请求头和请求体数据。
- Tomcat服务器处理请求,执行相应的逻辑操作,并生成响应数据。
- Tomcat服务器将响应数据按照HTTP协议打包,并发送给Nginx服务器。
- Nginx服务器接收到Tomcat服务器的响应数据,并将响应数据按照HTTP协议打包,并发送给客户端。
- 客户端接收到响应数据,并进行相应的处理。
整个过程中,Nginx起到了反向代理的作用,将客户端请求转发给后端的Tomcat服务器,并将Tomcat服务器的响应传递给客户端。这种架构可以提高系统的性能、可靠性和灵活性。
八、Linux网络服务-http状态码
1.请写出几个常见的HTTP状态码,并解释出现原因
http状态码分类
HTTP状态码是五个不同的类别:
1**:信息,服务器收到请求,需要请求者继续执行操作
2** :成功,操作被成功接收并处理
3**:重定向,需要进一步的操作以完成请求
4**:客户端错误,请求包含语法错误或无法完成请求
5**:服务器错误,服务器在处理请求的过程中发生了错误
五个类别的响应状态代码的第一个数字是唯一代表