正确地进行HTTP服务器配置,可为网站使加载之时的速度取得提升,提升幅度达300%,,并且与此同时,能够对90%以上的常见网络攻击起到抵御的作用。
此数据源于名叫2025 年全球Web 服务器性能研究报告的东西,展现出服务器搭配对于网站成败有着起决定性效用的作用。
文档根目录与首页文件设置
/var/www/html所处于的位置,系服务器的默认文档根目录,此乃大多Linux发行版的安装路径之处。
于实际的生产环境里头,把网站文件放置在单独的分区范围之内,能够防止因为系统盘空间不够而致使的服务中断情况发生。
于比如说的情况之下,能够把根目录给更替成/data/webroot,与此同时把权限拟定为755,将所有者设定作www-data用户。
首页文件的设置直接决定用户访问域名时首先看到的内容。
documentRoot "/home/wwwroot"
<Directory "/home/wwwroot">
DirectoryIndex myweb.html
Options Indexes FollowSymlinks
AllowOverride None
Require all granted
借助DirectoryIndex指令,于配置文件里,能够定义首页文件,那些首页文件具有多个不同优先级,像index.html,还有index.php,以及index.htm。
当用户对网站进行访问之际,服务器会依照顺序去查找那些文件,进而返回首个被找到的具备有效性的页面。
虚拟主机配置实现多站点托管
基于域名所存在的虚拟主机,能够让单台服务器去运行数百个网站,并且每个网站都能进行独立配置,而且相互之间不会产生干扰。
在进行配置操作时,需于httpd.conf里面将NameVirtualHost指令予以启用,之后针对每一个域名去创建VirtualHost段落。
比如说,要给example.com,指定不一样的文档根目录,还要为test.com,安排不同的错误日志文件。
ServerAdmin admin@example.com
ServerName example.com
documentRoot "/home/wwwroot/example.com"
ErrorLog "/var/log/apache2/example.com_error.log"
CustomLog "/var/log/apache2/example.com_access.log" combined
在虚拟主机配置里,必然得有ServerName指令去指定域名,ServerAlias能够用来添加别名。
每个站点的访问情况,建议使用CustomLog来分别开展对应的日志文件记录工作,这对于后续的分析以及问题排查而言,是有着至关重要的意义哦。
能够借助ErrorDocument指令来自定义错误页面,进而提升用户体验 ,的确如此。
进程模型选择与性能调优
HTTP服务器提供多种进程模型以适应不同硬件环境。
在prefork模型当中,每一个请求都对应着一个进程,其内存占用是比较大的,不过它的稳定性却是很高的,这种情况适合那种内存很充足的服务器。
worker模型借助多线程去处理请求,其内存效率更为高效,然而线程安全方面的问题是需要留意关注的,它是适宜于CPU资源充足丰富的那种场景的。
选择进程模型后需要调整关键参数。
于prefork模型里头,StartServers被设定成8,MinSpareServers被设作5,MaxSpareServers被设置成20,MaxRequestWorkers被设定为256。
这些参数,需依服务器内存大小来精准计算,还得依据日均访问量精确考量,以此防止资源出现浪费状况,或者避免服务走向崩溃局面。
压缩与缓存加速技术
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 1000
促使mod_deflate模块开始运行能够对HTML、CSS、JavaScript等文本类型的文件实施压缩操作,该压缩比率一般处于60%至70%的数值范围之内。
在进行配置之际,是需要去指定压缩内容类型的,像text/html、text/css、application/javascript这些,与此同时,要把压缩级别设置成6,以此来平衡CPU消耗以及压缩效果。
图片和PDF等已压缩文件不应再次压缩。
利用mod_expires模块达成的浏览器缓存,能够明显削减重复请求。
布置ExpiresDefault指令,把时间设定为访问过后30天,并且针对不同类型的文件,进行不同过期时间的设置。
比如说,图片以及字体文件被设定为一年,CSS和JavaScript文件被设置成一个月,HTML文档被设为24小时。
访问限制与安全防护
使用Require指令可以精确控制目录和文件的访问权限。
比如说,限定管理员后台仅仅准许特定 IP 地址去进行访问,具体如下:Require ip 192.168.1.0/24。
LoadModule deflate_module modules/mod_deflate.so
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/xml application/x-javascript
DeflateCompressionLevel 6
DeflateVersion 1.4
与此同时,结合要求所有请求均被拒绝,以此来拒绝其他所有经由的请求,进而来形成一种双重具备守护性质的机制。
对于敏感配置文件,比如说.htpasswd,一定要凭借FilesMatch指令,去禁止来自外部的访问。
文件上传目录需要额外安全措施。
于配置里头,运用php_flag engine off去将PHP执行权限予以关闭,以此防范上传恶意脚本。
与此同时,将LimitRequestBody设定成10M以对上传文件的大小加以限制,借此防止服务器存储被完全耗尽。
这些配置能有效防止文件上传漏洞被利用。
SSL证书部署与加密通信
LoadModule memcache_module modules/mod_memcache.so
CacheDir "/var/cache/apache2"
CacheSize "10m"
CacheMaxEntries 10000
CacheLock "emfile"
首先要生成私钥还有证书签名请求,之后才能够向证书颁发机构递交申请来配置SSL证书。
证书文件应当放置于/etc/ssl/certs这个目录之中,私钥要贮存在/etc/ssl/private目录,并且设置600权限哦。
在配置文件里头指向那个SSLCertificateFile的路径,同时指明SSLCertificateKeyFile的路径,然后开启SSLEngine on。
现代SSL配置,要将老旧的SSLv3协议禁用,还要把TLSv1.0协议禁用,并且只启用TLSv1.2协议,同时只启用TLSv1.3协议。
加密套件要选用ECDHE - RSA - AES256 - GCM - SHA384这类前向安全算法,从而保证就算私钥出现泄露情况,也没办法对历史通信数据进行解密。
借助HSTS功能迫使浏览器一直采用HTTPS进行连接,从而将安全性再度予以提高。
您在服务器配置过程中遇到的最大挑战是什么?
<Directory "/home/wwwroot/example.com">
Order Allow,Deny
Allow from all
Deny from 192.168.1.100
欢迎在评论区分享经验,点赞让更多开发者看到这些实用技巧。

Comments NOTHING