Apache可以对网站进行Cache控制,从而提高性能,尤其某些情况下反向代理了某个网站,而这个网站没有Cache控制又无法修改,可以用Apache这个中间层来实现。
例如 InnoKB 对 /js/*, /images/*, /html/*, /css/* 下的文件是没做Cache控制,而这些目录下的文件又是不会改变的,完全可以用缓存来提高性能。
启用mod_headers模块
首先运行 apache2ctl -M | grep headers 检查是否启用了mod_headers模块,如果启用,则上述命令会输出:
否则你需要修改 Apache的配置文件 httpd.conf或者Apache2.conf或虚拟主机配置中增加下面的行:
LoadModule headers_module modules/mod_headers.so
修改完成后,重启Apache: sudo service apache2 restart 或者 sudo systemctl restart apache2 。
增加Cache-Control控制
修改对应的主机控制,增加 Cache-Control 设置。
<VirtualHost *:443>
ServerName www.abc.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /path/fullchain.pem
SSLCertificateKeyFile /path/privkey.pem
<FilesMatch "\.(jpg|jpeg|png|bmp|gif|js|css)$">
Header set Cache-Control "max-age=86400, public"
</FilesMatch>
<LocationMatch "\.(jpg|jpeg|png|bmp|gif|js|css)$">
Header set Cache-Control "max-age=86400, public"
</LocationMatch>
<Location "/images/">
Header set Cache-Control "max-age=86400, public"
</Location>
<Location "/js/">
Header set Cache-Control "max-age=86400, public"
</Location>
<Location "/css/">
Header set Cache-Control "max-age=86400, public"
</Location>
<Location "/html/">
Header set Cache-Control "max-age=86400, public"
</Location>
</VirtualHost>
修改完成后,记得重启 Apache 服务器。