環境: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