通过Apache的mod_headers模块设置关键HTTP头,帮助浏览器适配移动设备显示。需确保mod_headers已启用(sudo a2enmod headers),然后在Apache配置文件(如/etc/httpd/conf/httpd.conf或虚拟主机配置)中添加以下内容:
<IfModule mod_headers.c>
# 根据User-Agent动态调整内容,支持响应式设计
Header append Vary User-Agent
# 控制缓存行为,提升移动端加载速度
Header set Cache-Control "max-age=3600, public"
# 强制IE使用最新渲染引擎,避免兼容性问题
Header set X-UA-Compatible "IE=edge"
# 设置移动设备视口,确保页面自适应屏幕尺寸
Header set Viewport "width=device-width, initial-scale=1.0"
</IfModule>
此配置可确保移动设备正确解析页面布局,提升用户体验。
使用mod_rewrite模块根据User-Agent判断访问设备,将移动端请求重定向至专用移动目录(如/mobile)。需启用mod_rewrite(sudo a2enmod rewrite),并在配置文件中添加:
<IfModule mod_rewrite.c>
RewriteEngine On
# 匹配常见移动设备关键字(如Android、iOS、BlackBerry等)
RewriteCond %{HTTP_USER_AGENT} "android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|iEMobile|Opera M(obi|ini)" [NC]
# 重定向至/mobile目录,保留原始请求路径
RewriteRule ^(.*)$ /mobile/$1 [L]
</IfModule>
需提前创建/mobile目录并部署适配移动端的页面(如简化版布局、更小的图片),实现移动端专属体验。
移动网络带宽有限,通过mod_expires模块设置静态资源(CSS、JS、图片)的长缓存时间,降低移动端加载延迟。在配置文件中添加:
<IfModule mod_expires.c>
ExpiresActive On
# CSS文件缓存30天
ExpiresByType text/css "access plus 30 days"
# 图片文件缓存1年(JPEG、PNG、GIF)
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
# JavaScript文件缓存30天
ExpiresByType application/javascript "access plus 30 days"
</IfModule>
缓存生效后,移动端浏览器会直接从本地读取静态资源,减少服务器请求次数。
移动网络延迟较高,通过mod_deflate模块压缩HTML、CSS、JS等文本文件(避免压缩图片、视频等二进制文件),可减少传输体积约30%-70%。在配置文件中添加:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json
</IfModule>
压缩后能有效提升移动端页面加载速度,改善用户体验。
CentOS上Apache默认使用prefork模块(适合兼容性场景),但高并发下性能较差。建议切换至event模块(异步非阻塞,适合移动端高并发请求)。修改/etc/httpd/conf.modules.d/00-mpm.conf文件:
<IfModule mpm_event_module>
StartServers 3
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 150
MaxConnectionsPerChild 0
</IfModule>
切换前需注释掉prefork模块的配置(如/etc/httpd/conf.modules.d/00-mpm.conf中的LoadModule mpm_prefork_module),并启用event模块(LoadModule mpm_event_module modules/mod_mpm_event.so)。调整后重启Apache使配置生效。
调整Linux内核参数,改善TCP连接处理能力和文件描述符限制,适应移动端高并发请求。编辑/etc/sysctl.conf文件,添加以下内容:
# 开启SYN Cookies,防止SYN Flood攻击
net.ipv4.tcp_syncookies = 1
# 允许TIME-WAIT sockets重新用于新连接,减少TIME-WAIT堆积
net.ipv4.tcp_tw_reuse = 1
# 快速回收TIME-WAIT sockets,适用于高并发短连接场景
net.ipv4.tcp_tw_recycle = 1
# TIME-WAIT超时时间(秒),缩短可快速释放资源
net.ipv4.tcp_fin_timeout = 30
# 最大文件描述符数量,支持更多并发连接
fs.file-max = 6815744
# 系统级最大连接数(包括所有端口)
net.core.somaxconn = 65535
# 网络设备接收队列长度,避免丢包
net.core.netdev_max_backlog = 30000
修改后执行sysctl -p使参数生效。
禁用不必要的Apache模块(如mod_autoindex、mod_ldap等),降低内存和CPU消耗。通过httpd -M命令查看已加载模块,注释掉/etc/httpd/conf.modules.d/目录下不需要的模块配置(如LoadModule autoindex_module modules/mod_autoindex.so)。
同时优化日志策略:
combined格式,比common格式更简洁);warn,仅记录警告及以上级别信息);logrotate工具定期分割日志文件(默认已配置),避免单个日志文件过大。以上步骤覆盖了Apache2配置中针对移动端优化的核心环节,需根据服务器硬件资源(内存、CPU)和实际负载情况进行参数调整,确保优化效果与稳定性平衡。