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>

  

posted @ 2022-08-18 17:56  yuanbangchen  阅读(55)  评论(0编辑  收藏  举报