httpd--重定向
重定向 Redirect [status] URL-path URL status状态: Permanent: 返回永久重定向状态码 301,(适合在不用的域名上使用,www.360buy.com) Temp:返回临时重定向状态码302或307. 此为默认值 工作原理,向360buy.com发送请求包,重定向再向jd.com再发送请求,两次请求数据包。(有截持风险) 注意:curl -I www.360buy.com HTTP/1.1 301 Moved Permanently curl -I www.jd.com HTTP/1.1 302 Moved Temporarily curl -L www.jd.com 默认curl 是发一个数据包的。如果是Permanent,是需要发送多个数据包。 示例: <virtualhost *:80> documentroot /data/asite servername www.a.com <Directory "/data/asite"> Require all granted </Directory> Redirect temp / http://www.b.com/ # / :指的是返回到本根域,这里指www.a.com #Redirect Permanent / http://www.b.com/ #RewriteEngine on #可以使用rewrite模块,类似Temp #RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=302] </virtualhost> 测试使用curl -IL www.a.com (适合有虚拟主机的重写向,如果没有虚拟主机,使用curl -Lk查看会产生循环。提示maximum redirects followed) vim /etc/httpd/conf/httpd.conf DocumentRoot "/var/www/html" redirect temp / https://www.a.com/ 如果使用这种重定向会产生循环。提示maximum redirects followed,使用rewriteEngine就行。 实验:通过rewrite来实现http到https的重定向 启用模块#LoadModule rewrite_module modules/mod_rewrite.so <virtualhost *:80> documentroot /data/asite ServerName www.zjol.com.cn <Directory "/data/asite"> Require all granted </Directory> RewriteEngine on RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=302] </virtualhost> <virtualhost *:443> documentroot /data/zjol ServerName www.zjol.com.cn <Directory "/data/zjol"> Require all granted </Directory> SSLCertificateFile /etc/pki/CA/certs/zjol.com.cn_public.crt SSLCertificateKeyFile /etc/pki/CA/certs/zjol.com.cn.key SSLCertificateChainFile /etc/pki/CA/certs/zjol.com.cn_chain.crt </virtualhost> 21、HSTS:(严格传输安全) 注意:防止重定向时有数据有截持风险。 HTTP Strict Transport Security 服务器端配置支持HSTS后,会在给浏览器返回的HTTP首部中携带HSTS字段。 浏览器获取到该信息后,会将所有HTTP访问请求在内部做307跳转到HTTPS。而无需任何网络过程 HSTS preload list是Chrome浏览器中的HSTS预载入列表,在该列表中的网站,使用Chrome浏览器访问时, 会自动转换成HTTPS。Firefox、Safari、Edge浏览器也会采用这个列表。 HSTS的作用 : 可以避免因为重定向的过程中被劫持 缺点:无法避免第一次请求的过程中被劫持。所以有了HSTS preload list 实现HSTS示例: <virtualhost *:80> documentroot /data/asite ServerName www.zjol.com.cn <Directory "/data/asite"> Require all granted </Directory> Header always set Strict-Transport-Security "max-age=31536000" #启用并设置HSTS时间。 RewriteEngine on RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=302] </virtualhost> <virtualhost *:443> documentroot /data/zjol ServerName www.zjol.com.cn <Directory "/data/zjol"> Require all granted </Directory> Header always set Strict-Transport-Security "max-age=31536000" SSLCertificateFile /etc/pki/CA/certs/zjol.com.cn_public.crt SSLCertificateKeyFile /etc/pki/CA/certs/zjol.com.cn.key SSLCertificateChainFile /etc/pki/CA/certs/zjol.com.cn_chain.crt </virtualhost>