Apache 強制全站https請求(配置ssl證書)

環境:Apache2.2 + Centos 6.8
最近作網站須要用到https,像百度、京東那樣,瀏覽器上有個綠色的小鎖頭,同時數據加密也是網站很大的保障。因爲是臨時測試的,因此在阿里雲上面買了個賽門鐵克的免費型的證書。(中間申請部分略過)證書最後頒發的時候,能夠在列表頁操做下載,進入下載頁,選擇Apache,而後能夠按照上面的官方的文檔配置,可是不須要這麼作,剛開始弄這個的人,估計度娘谷歌了好久仍是懵逼,由於最後在地址欄輸入域名刷新的時候,卻不是本身想要的效果。要這麼來,保準你次次都行。
咋們先要這麼想:好比我手上有個一個域名www.aaa.com,那既然是要全站強制跳轉https,那就要配兩個虛擬主機,一個是監聽80端口的,這個虛擬機只作監聽和轉發的工做,不用配置啥站點根目錄。還有一個是監聽443端口的,這個作真正的訪問工做,除了須要配置本來沒有ssl以前80虛擬機須要作的工做外,還要開啓ssl引擎驗證、指定證書位置、私鑰(私鑰都放本身的服務器上用來接收請求的時候解密數據用的;公鑰是訪問的時候,客戶端會下載),看懂了上面的話,下面的配置就不成問題了。nginx

#記得監聽這個端口
Listen 443

#load這個ssl模塊進來
LoadModule ssl_module modules/mod_ssl.so

<VirtualHost *:80>
    ServerName www.aaa.com
    ServerAlias aaa.com 
    RewriteEngine on
    RewriteRule ^(.*)?$ https://www.aaa.com$1 [R=301,L]
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin aaa@163.com
    DocumentRoot "/home/aaa/webroot" 
    ServerName www.aaa.com
    
    #開啓ssl引擎
    SSLEngine on
    
    #寫你證書的路徑
    SSLCertificateFile /etc/httpd/cert/public.pem  
    
    #寫你私鑰的路徑
    SSLCertificateKeyFile /etc/httpd/cert/21427950260000000.key 
    
    #設置站點訪問規則
    <Directory "/home/aaa/webroot">
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
   </Directory>
    
    #指定錯誤日誌&訪問日誌
    ErrorLog "logs/aaa.com-error_log"
    CustomLog "logs/aaa.com-access_log" common
</VirtualHost>

其中要說明的是,在80虛擬機配置的最後一行,^(.*)? 和$1 這兩東西表明了好比你訪問了www.aaa.com/public/index/ ,那麼這段url的/public/index/會被佔位的$1變量都會照舊複製過來,[R=301,L]表明永久轉發。其實如今好多人都一窩蜂的都去用nginx了,抗高併發比apache牛,佔用內存也少,能夠考慮從apache+tomcat轉向nginx+tomcat了,apache只是情懷web

相關文章
相關標籤/搜索