目錄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服務