网页缓存
配置网页的缓存时间
通过 mod_ expire 模块配置 Apache, 使网页能在客户端浏览器缓存一段时间, 以避免重复请求
启用 mod_ expire 模块后, 会自动生成页面头部信息中的 Expires 标签和 Cache-Control 标签, 从而降低客户端的访问频率和次数, 达到减少不必要的流量和增加访问速度的目的
启用网页缓存功能步骤
查看是否安装 mod_ expire 模块
修改配置文件启用缓存功能
抓包测试
查看是否安装了 mod_ expire 模块
/usr/local/apache/bin/apachectl -t -D DUMP_MODULES
如果输出中没有
expires_module (static)
, 则说明编译时没有安装 mod_expires
如果没有安装则要重新编译安装
- ./configure --enable-expires...
- make && make install
修改 httpd.conf 配置文件
启用 mod_ expires 模块, 并设置 http 协议下任意格式的文档均
60
秒后过期
- <lfModule mod_expires.c>
- ExpiresActive On ExpiresDefault "access plus 60 seconds"
- </lfModule>
重启 httpd 服务
再次访问测试网站, 使用抓包工具 Fiddler 进行数据抓取分析
配置实例
在此处我将接着上一篇实验继续做, 在上一篇实验中, 手工编译安装 Apache 服务时已经安装过 expires 模块, 这里我直接测试
- [[email protected] ~]# VIM /usr/local/httpd/conf/httpd.conf
- ...// 省略部分内容...
- #LoadModule logio_module modules/mod_logio.so
- LoadModule env_module modules/mod_env.so
- LoadModule expires_module modules/mod_expires.so // 找到此模块, 去掉 #开启模块
- LoadModule headers_module modules/mod_headers.so
- #LoadModule unique_id_module modules/mod_unique_id.so
- ...// 省略部分内容...
- <IfModule mod_expires.c> // 在文件末尾处添加以下条目, 对 expires 模块进行配置
- ExpiresActive On // 开启功能
- ExpiresDefault"access plus 50 seconds" // 设置缓存时间
- </IfModule>
- :wq // 保存退出
- [[email protected] ~]# apachectl -t // 验证语法格式
- Syntax OK // 语法正常
- [[email protected] ~]# service httpd stop // 停止 HTTP 服务
- [[email protected] ~]# service httpd start // 启动 HTTP 服务
- [[email protected] ~]# /usr/local/httpd/bin/apachectl -t -D DUMP_MODULES |grep "expires"
- // 检测模块是否开启
- expires_module (shared) // 成功开启
- [[email protected] ~]# netstat -ntap | grep 80 // 查看端口是否开启
- tcp 0 0 192.168.144.133:80 0.0.0.0:* LISTEN 47752/httpd
在客户机中访问网页, 使用抓包工具看缓存模块是否开启
Apache 安全优化
配置防盗链
防盗链就是防止别人的网站代码里面盗用服务器的图片, 文件, 视频等相关资源
如果别人盗用网站的这些静态资源, 明显的是会增大服务器的带宽压力
所以作为网站的维护人员, 要杜绝我们服务器的静态资源被其他网站盗用
配置 Apache 实现防盗链
检查 Apache 是否安装了 mod_rewrite 模块
/usr/local/apache/bin/apachectl -t -D DUMP_ MODULES
如果输出中没有
rewrite_module (static)
, 则说明编译时没有安装 mod_ rewrite 模块
如果没有安装则要重新编译安装
- ./configure --enable-rewrite...
- make && make install
配置规则变量说明
%{HTTP_ REFERER}: 浏览 header 中的链接字段, 存放一 - 个链接的 URL, 代表是从哪个链接访问所需的网页
!^: 不以后面的字符串开头
.*$: 以任意字符结尾
NC: 不区分大写
R: 强制跳转
规则匹配说明
RewriteEngine On: 打开网页重写功能
RewriteCond: 设置匹配规则
RewriteRule: 设置跳转动作
规则匹配
如果相应变量的值匹配所设置的规则, 则逐条往下处理; 如果不匹配, 则往后的规则不再匹配
配置操作演示
修改配置文件启用防盗链功能并设置规则:
- RewriteEngine On
- RewriteCond %{
- HTTP_ REFERER
- } !^http://test.com/.*$ [NC]*
- RewriteCond %{
- HTTP_ REFERER
- } !^http://test.com$ [NC]
- RewriteCond %{
- HTTP_ REFERER
- } !^http://www.test.com/.*$ [NC]*
- RewriteCond %{
- HTTP_ REFERER
- } !^http://www.test.com$ [NC]
- RewriteRule .*\.(gifljipg|swf)$ http://www.test.com/error.html [R,NC]
配置实例
首先安装 DNS 服务, 并配置 DNS 服务, 我们这里是同域名访问网页; 在前面手工编译安装 Apache 服务时已经安装过放掉连模块插件 mod_rewrite, 直接进入 HTTP 主著配置文件进行配置.
[[email protected] ~]# yum install bind -y
已加载插件: fastestmirror, langpacks
- base | 3.6 kB 00:00
- extras | 2.9 kB 00:00
- ...// 省略部分内容...
已安装:
bind.x86_64 32:9.11.4-9.P2.el7
作为依赖被安装:
bind-export-libs.x86_64 32:9.11.4-9.P2.el7
作为依赖被升级:
- bind-libs.x86_64 32:9.11.4-9.P2.el7
- bind-libs-lite.x86_64 32:9.11.4-9.P2.el7
- bind-license.noarch 32:9.11.4-9.P2.el7
- bind-utils.x86_64 32:9.11.4-9.P2.el7
- dhclient.x86_64 12:4.2.5-77.el7.CentOS
- dhcp-common.x86_64 12:4.2.5-77.el7.CentOS
- dhcp-libs.x86_64 12:4.2.5-77.el7.CentOS
完毕!
- [[email protected] ~]# VIM /etc/named.conf
- ...// 省略部分内容...
- options {
- listen-on port 53 { any; };
- listen-on-v6 port 53 { ::1; };
- directory "/var/named";
- dump-file "/var/named/data/cache_dump.db";
- statistics-file "/var/named/data/named_stats.txt";
- memstatistics-file "/var/named/data/named_mem_stats.txt";
- recursing-file "/var/named/data/named.recursing";
- secroots-file "/var/named/data/named.secroots";
- allow-query { any; };
- ...// 省略部分内容...
- :wq
- [[email protected] ~]# VIM /etc/named.rfc1912.zones
- ...// 省略部分内容...
- zone "kgc.com" IN {
- type master;
- file "kgc.com.zone";
- allow-update { none; };
- };
- ...// 省略部分内容...
- :wq
- [[email protected] ~]# cd /var/named/
- [[email protected] named]# ls
- data dynamic named.ca named.empty named.localhost named.loopback slaves
- [[email protected] named]# cp -p named.localhost kgc.com.zone
- [[email protected] named]# VIM kgc.com.zone
- $TTL 1D
- @ IN SOA @ rname.invalid. (
- 0 ; serial
- 1D ; refresh
- 1H ; retry
- 1W ; expire
- 3H ) ; minimum
- NS @
- A 127.0.0.1
- www IN A 192.168.144.133
- [[email protected] named]# systemctl start named // 启动 DNS 服务
这里我们先不开启盗链功能, 现在客户机中访问网页图片, 然后在开启一台 win 7 客户机, 安装 http 服务, 盗链图片, 看是否可以盗链
在 Linux 系统中配置防盗链模块
- [[email protected] ~]# VIM /usr/local/httpd/conf/httpd.conf // 编辑主配置文件
- ...// 省略部分内容...
- #LoadModule userdir_module modules/mod_userdir.so
- LoadModule alias_module modules/mod_alias.so
- LoadModule rewrite_module modules/mod_rewrite.so // 找到此条, 并开启此条目
- <IfModule unixd_module>
- #
- # If you wish httpd to run as a different user or group, you must run
- ...// 省略部分内容...
- <Directory "/usr/local/httpd/htdocs"> // 在此标签下添加防盗链条目
- #
- # Possible values for the Options directive are "None", "All",
- # or any combination of:
- # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
- #
- # Note that "MultiViews" must be named *explicitly* --- "Options All"
- # doesn't give it to you.
- #
- # The Options directive is both complicated and important. Please see
- # http://httpd.apache.org/docs/2.4/mod/core.html#options
- # for more information.
- #
- Options Indexes FollowSymLinks
- #
- # AllowOverride controls what directives may be placed in .htaccess files.
- # It can be "All", "None", or any combination of the keywords:
- # AllowOverride FileInfo AuthConfig Limit
- #
- AllowOverride None
- #
- # Controls who can get stuff from this server.
- #
- Require all granted
- RewriteEngine On // 开启防盗链功能
- RewriteCond %{HTTP_REFERER} !^http://kgc.com/.*$ [NC]
- RewriteCond %{HTTP_REFERER} !^http://kgc.com$ [NC]
- RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/.*$ [NC]
- RewriteCond %{HTTP_REFERER} !^http:// www.kgc.com/$ [NC]
- RewriteRule .*\.(gif|jpg|swf)$ http://www.kgc.com/error.png
- </Directory>
- ...// 省略部分内容...
- :wq
- [[email protected] ~]# cd /mnt // 进入挂载目录
- [[email protected] mnt]# ls // 查看是否有准备好的防盗链图片
- apr-1.6.2.tar.gz cronolog-1.6.2-14.el7.x86_64.rpm httpd-2.4.29.tar.bz2 MySQL-5.6.26.tar.gz
- apr-util-1.6.0.tar.gz Discuz_X2.5_SC_UTF8.zip LAMP-php5.6.txt nginx-1.12.0.tar.gz
- awstats-7.6.tar.gz error.PNG miao.jpg PHP-5.6.11.tar.bz2
- [[email protected] mnt]# cp error.PNG /usr/local/httpd/htdocs/ // 将防盗链图片复制入 http 站点目录
- [[email protected] mnt]# cd /usr/local/httpd/htdocs/ // 进入站点目录
- [[email protected] htdocs]# ls // 查看
- error.PNG index.HTML miao.jpg // 成功复制
- [[email protected] htdocs]# systemctl start httpd // 重启网络服务
再次在客户机中访问网页, 看防盗链功能是否开启
隐藏版本信息
Apache 隐藏版本信息
Apache 的版本信息, 透露了一定的漏洞信息, 从而给网站带来安全隐患
生产环境中要配置 Apache 隐藏版本信息
可使用 Fiddler 抓包工具分析
配置 Apache 隐藏版本信息
将主配置文件 httpd.conf 以下行注释去掉
- #
- Include conf/extra/httpd-default.conf
修改 httpd-default.conf 文件两个地方
ServerTokens Full 修改为 Server Tokens Prod
将 ServersSignature On 修改为
ServersSignature Off
重启 httpd 服务, 访问网站, 抓包测试
配置实例
现在客户机中使用抓包工具, 看看是否会显示版本信息
进入 HTTP 配置文件, 更改信息
- [[email protected] htdocs]# VIM /usr/local/httpd/conf/httpd.conf
- ...// 省略部分内容...
- #Include conf/extra/httpd-dav.conf
- # Various default settings
- Include conf/extra/httpd-default.conf // 找到此条目, 并去掉注释
- # Configure mod_proxy_html to understand HTML4/XHTML1
- <IfModule proxy_html_module>
- Include conf/extra/proxy-HTML.conf
- </IfModule>
- ...// 省略部分内容...
- :wq // 保存退出
- [[email protected] htdocs]# cd /usr/local/httpd/conf/extra/ // 进入目录
- [[email protected] extra]# ls
- httpd-autoindex.conf httpd-info.conf httpd-mpm.conf httpd-userdir.conf
- httpd-dav.conf httpd-languages.conf httpd-multilang-errordoc.conf httpd-vhosts.conf
- httpd-default.conf httpd-manual.conf httpd-ssl.conf proxy-HTML.conf
- [[email protected] extra]# VIM httpd-default.conf // 编辑配置文件
- ...// 省略部分内容...
- # Set to one of: Full | OS | Minor | Minimal | Major | Prod
- # where Full conveys the most information, and Prod the least.
- #
- ServerTokens Prod // 找到此条目, 并更改 Full 为 Prod
- #
- # Optionally add a line containing the server version and virtual host
- # name to server-generated pages (internal error documents, FTP directory
- # listings, mod_status and mod_info output etc., but not CGI generated
- # documents or custom error documents).
- # Set to "EMail" to also include a mailto: link to the ServerAdmin.
- # Set to one of: On | Off | EMail
- #
- ServerSignature Off // 并确定此处是否为关闭, 默认为关闭
- #
- # HostnameLookups: Log the names of clients or just their IP addresses
- # e.g., www.apache.org (on) or 204.62.129.132 (off).
- :wq // 保存退出
- [[email protected] extra]# systemctl restart httpd.service // 重启服务
再次在客户机中测试抓包, 看是否还显示版本信息
来源: http://www.bubuko.com/infodetail-3276105.html