Apache网页的优化、安全与防盗链图文详解
一、优化
1.启用gzip压缩
启用gzip压缩可以大大减小网页传输的大小,提高网页加载速度。在Apache中可以通过修改.htaccess文件实现:
<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
# IE 6-8
<IfModule mod_setenvif.c>
SetEnvIfNoCase Request_URI \.(?:gif|jpeg|jpg|png)$ no-gzip
</IfModule>
</IfModule>
这样所有的 HTML、CSS、Javascript 和 XML 文件会被压缩,使得它们的大小减小。
2.开启缓存
开启缓存可以减少服务器的负载并提高网页的访问速度。Apache2.2 或更高版本提供了 mod_cache 模块可以实现缓存,Apache2.4 或更高版本还可以使用 mod_cache_socache 模块。
示例1:设置缓存过期时间
<IfModule mod_cache.c>
LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so
<IfModule mod_cache_disk.c>
CacheRoot /var/cache/
CacheDirLevels 2
CacheDirLength 1
CacheEnable disk /
# Set cache expiry time (in seconds)
CacheDefaultExpire 3600
CacheMaxExpire 86400
</IfModule>
</IfModule>
这样设置了缓存文件的根目录及其子目录,在此目录下设置了缓存,设置缓存过期时间为 1 小时,最大缓存时间为 1 天。
3.启用HTTP/2
HTTP/2 可以在一定程度上提高网页的加载速度,尤其是对于大量小文件的网页。可以在Apache2.4 中通过启用 mod_http2 模块来启用:
<IfModule http2_module>
ProtocolsHonorOrder On
Protocols h2 http/1.1
</IfModule>
这样会在HTTP请求头里添加“Upgrade-Insecure-Requests: 1”参数,支持HTTP/2协议的现代浏览器就可以使用HTTP/2了
二、安全
1.启用HTTPS
启用HTTPS可以保护用户的隐私数据,不被黑客窃取。可以在 Apache 中使用 mod_ssl 模块来启用 HTTPS:
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/private.key
</VirtualHost>
这样虚拟主机 example.com 就启用了 HTTPS。
2.防止网站被SQL注入
SQL注入是一种常见的网络攻击方式,通过在输入框等地方输入可以被SQL解析器执行的恶意语句,而最终控制数据库甚至服务器。为了防止SQL注入,可以使用以下方法:
示例2:使用预处理语句
// 示例代码
$stmt = $pdo->prepare('SELECT * FROM user WHERE name = :name AND password = :password');
$stmt->bindParam(':name', $name, PDO::PARAM_STR);
$stmt->bindParam(':password', $password, PDO::PARAM_STR);
$stmt->execute();
以上代码中,$pdo 是 PDO 对象,它使用预处理语句,绑定参数到变量上,再执行 SQL 语句,这样就可以避免 SQL 注入的问题。
三、防盗链
防盗链用来防止其他网站盗用自己的图片或资源等,消耗自己的带宽,对于流量较大的网站来说,防盗链是非常必要的。在 Apache 中可以使用 .htaccess 文件来防盗链。
示例3:禁止外站盗链
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/ [NC]
RewriteRule \.(gif|jpg|png)$ - [F]
以上代码中,如果 HTTP_REFERER 不为空,而且不属于 example.com,那么访问后缀为 .jpg、.gif、.png 的文件都会返回403 Forbidden 错误。
2.防止CSS、JS、图片等文件被盗链
可以在 .htaccess 文件中使用以下代码实现:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/ [NC]
RewriteRule \.(css|js|jpe?g|gif|png)$ - [F]
以上代码表示除了自己的网站访问,其他的访问不允许访问后缀为 .css、.js、.jpg、.jpeg、.gif、.png 的文件。
总结:通过上面的攻略可以在Apache网站中设置许多优化和安全策略,以及防止盗链等操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Apache网页的优化、安全与防盗链图文详解 - Python技术站