目录html
将http请求转发至https的URL,防止客户在访问网站的时候,使用http协议头,而不使用https。形成不安全的链接。可是这个方法存在一个问题,由于他的链接步骤是这个样子的。并且他不存在记录一说,用户每次使用http来访问,他都会重定向一次。web
重定向
Redirect [status] URL-path URLapache
status状态:
Permanent:Returns a permanent redirect status (301) indicating thatthe resource has moved permanently
Temp:Returns a temporary redirect status (302). This is the defaultvim
配置示例:centos
vim /etc/httpd/conf.d/redirect.conf Redirect temp / https://www.magedu.com/
HSTS:HTTP Strict Transport Security
服务器端配置支持HSTS后,会在给浏览器返回的HTTP首部中携带HSTS字段。浏览器获取到该信息后,会将全部HTTP访问请求在内部作307跳转到HTTPS。而无需任何网络过程。这样的话,只有第一次访问,才会是使用http协议,后面都自动默认https协议浏览器
实现HSTS示例:安全
vim /etc/httpd/conf.d/redirect.conf Header always set Strict-Transport-Security "max-age=31536000" RewriteEngine on RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=302]
是Chrome浏览器中的HSTS预载入列表,在该列表中的网站,使用Chrome浏览器访问时,会自动转换成HTTPS。Firefox、Safari、Edge浏览器也会采用这个列表。当你的网址加入该列表后,使用浏览器访问该网站,只会使用https协议。服务器
htpasswd:basic认证基于文件实现时,用到的帐号密码文件生成工具
apachectl:httpd自带的服务控制脚本,支持start和stop
rotatelogs:日志滚动工具
access.log -->
access.log, access.1.log -->
access.log, acccess.1.log, access.2.log网络
httpd的压力测试工具socket
ab [OPTIONS] URL,来自httpd-tools包
#vim /etc/httpd/conf.d/test.conf <Location "/status"> SetHandler server-status Require all granted </Location>
启用反向代理
特定URL反向代理
示例:
<VirtualHost *> ServerName www.magedu.com ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ </VirtualHost>
在一个物理服务上,搭建多个web站点,根据用户的访问。返回不一样的站点
站点标识: socket
有三种实现方案:
注意:通常虚拟机不要与main主机混用;所以,要使用虚拟主机,通常先禁用main主机
禁用方法:注释中心主机的DocumentRoot指令便可
<VirtualHost IP:PORT> ServerName FQDN DocumentRoot “/path" </VirtualHost> 建议:上述配置存放在独立的配置文件中,不要写在http.conf中,方便管理 其它可用指令: ServerAlias:虚拟主机的别名;可屡次使用 ErrorLog: 错误日志 CustomLog:访问日志 <Directory “/path"> </Directory> Alias
#给网卡添加多个地址 ip a add 192.168.30.11/24 dev eth0 ip a add 192.168.30.22/24 dev eth0 ip a add 192.168.30.33/24 dev eth0 <VirtualHost 192.168.30.11> #虚拟主机的别名;可屡次使用,目前是不起做用的 ServerName www.a.com #指定根目录 DocumentRoot "/data/website1" #错误日志 ErrorLog "logs/a.com-error_log" #访问日志 TransferLog "logs/a.com-access_log" </VirtualHost> <VirtualHost 192.168.30.22> #虚拟主机的别名;可屡次使用,目前是不起做用的 ServerName www.b.com #指定根目录 DocumentRoot "/data/website2" #错误日志 ErrorLog "logs/b.com-error_log" #访问日志 TransferLog "logs/b.com-access_log" </VirtualHost> <VirtualHost 192.168.30.33> #虚拟主机的别名;可屡次使用,目前是不起做用的 ServerName www.c.com #指定根目录 DocumentRoot "/data/website3" #错误日志 ErrorLog "logs/c.com-error_log" #访问日志 TransferLog "logs/c.com-access_log" </VirtualHost>
vim /etc/http/conf.d/vhost.conf mkdir /data/website{1,2,3} -pv echo www.a.com > /data/website1/index.html echo www.b.com > /data/website2/index.html echo www.c.com > /data/website3/index.html 多个网站就要使用多个不一样的端口绑定 listen 81 listen 82 listen 83 建立虚拟主机 #要绑定的IP和端口号 <VirtualHost *:81> #虚拟主机的别名;可屡次使用,目前是不起做用的 ServerName www.a.com #指定根目录 DocumentRoot "/data/website1" #错误日志 ErrorLog "logs/a.com-error_log" #访问日志 TransferLog "logs/a.com-access_log" </VirtualHost> #要分权限,配合虚拟主机目录使用 <Directory "/data"> Require all granted </Directory> 将上述配置修改三份,对应上面的建立目录 建议:上述配置存放在独立的配置文件中,若是是在centos7 分配虚拟主机,必定要给目录权限!!!不然没法访问!!!必定要给目录权限!!!不然没法访问!!!
靠主机头的HOST地址来区分,根据不一样的主机头,来返回不一样的网站
根据虚拟主机中定义的ServerName
<VirtualHost *:80> #这就是指定的访问主机头 ServerName www.a.com #指定根目录 DocumentRoot "/data/website1" #错误日志 ErrorLog "logs/a.com-error_log" #访问日志 TransferLog "logs/a.com-access_log" </VirtualHost> <VirtualHost *:80> #这就是指定的访问主机头 ServerName www.b.com #指定根目录 DocumentRoot "/data/website2" #错误日志 ErrorLog "logs/b.com-error_log" #访问日志 TransferLog "logs/b.com-access_log" </VirtualHost> <VirtualHost *:80> #这就是指定的访问主机头 ServerName www.c.com #指定根目录 DocumentRoot "/data/website3" #错误日志 ErrorLog "logs/c.com-error_log" #访问日志 TransferLog "logs/c.com-access_log" </VirtualHost>
centos 6 上实现的时候有一点差异,若是要实现基于名称(主机头)的虚拟主机,要加上NameVirtualHost 这一行,不然没法实现。
centos 6 上实现的时候有一点差异,若是要实现基于名称(主机头)的虚拟主机,要加上NameVirtualHost 这一行,不然没法实现。
centos 6 上实现的时候有一点差异,若是要实现基于名称(主机头)的虚拟主机,要加上NameVirtualHost 这一行,不然没法实现。
这样就表示客户端 访问www.a.com就返回 a.com,访问b.com就返回b.com,访问c.com就返回c.com
在浏览器敲网址的时候,好比www.a.com ,他不单单是DNS解析,还会向服务器发送 HOST : www.a.com 的标记
若是是按网络地址(IP地址)来访问,那么是返回虚拟主机中的第一个,第一个就属于默认网站。
https = http + ssl
cd /etc/pki/CA #生成CA私钥 (umask 077; openssl genrsa -out pirvate/cakey.pem 2048) #建立自签名证书 openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650 echo 01 > serial touch index.txt
cd /etc/httpd/ mkdir certs cd certs #生成私钥 (umask 077;openssl genrsa -out httpd.key 2048) #生成证书签署请求 openssl req -new -key httpd.key -out httpd.csr -days 3655 #签名 openssl ca -in httpd.csr -out httpd.crt -days 3655
yum install mod_ssl 安装后会在/etc/pki/tls 下生成该包的一个私钥,一个自签名证书。 因此若是不本身搭建CA,是能够直接使用的 配置mod_ssl配置文件 ,在安装这个模块后,这个文件会本身生成 vim /etc/httpd/conf.d/ssl.conf #修改为咱们本身的CA #指定证书 SSLCertificateFile /etc/httpd/conf.d/ssl/httpd.crt #指定私钥 SSLCertificateKeyFile /etc/httpd/conf.d/ssl/httpd.key #指定CA的路径 默认该行是注释状态的 SSLCACertificateFile /etc/httpd/conf.d/ssl/cacert.pem 重启服务 service httpd restart 注意:ssl会话只能基于IP建立,这意味着若是服务器仅有一个IP,那么仅为一个虚拟主机提供https服务