以Windows 10系統爲例。html
先到http://slproweb.com/products/Win32OpenSSL.html 去下載OpenSSL(根據系統選擇32位或者64位版本下載安裝)。nginx
而後安裝在C:\OpenSSL-Win64下。git
而後配置環境變量。在系統環境變量中添加環境變量:github
變量名:OPENSSL_HOMEweb
變量值:C:\OpenSSL-Win64\bin;windows
(變量值爲OPENSSL安裝位置下的bin目錄)瀏覽器
並在Path變量結尾添加一條: %OPENSSL_HOME%安全
到Nginx官網下載Nginx,我這裏下載的是 nginx/Windows-1.12.0 這個版本。服務器
把下載好的壓縮包解壓出來,拷貝其中的nginx-1.12.0目錄到c:\下。並將文件夾名字修改成nginx。這樣,Nginx就被安裝到了c:\nginx目錄下。session
進入到C:\nginx目錄下,雙擊nginx.exe文件便可啓動服務器。在瀏覽器地址欄輸入http://localhost,若是能夠成功訪問到Nginx的歡迎界面,則說明安裝成功。
在控制檯中執行:
cd C:\nginx\ssl
在命令行中執行命令:
openssl genrsa -des3 -out buduhuisi.key 1024 # buduhuisi文件名是本身隨便起便可
輸入密碼後,再次重複輸入確認密碼。記住此密碼,後面會用到。
在命令行中執行命令:
openssl req -new -key buduhuisi.key -out buduhuisi.csr
其中key文件爲剛纔生成的文件。
執行上述命令後,須要輸入一系列的信息。輸入的信息中最重要的爲Common Name,這裏輸入的域名即爲咱們要使用https訪問的域名 ,好比我輸入的是localhost。其它的內容隨便填便可。
以上步驟完成後,ssl文件夾內出現兩個文件:buduhuisi.csr 和 buduhuis.key
在加載SSL支持的Nginx並使用上述私鑰時除去必須的口令,不然會在啓動nginx的時候須要輸入密碼。
複製buduhuisi.key並重命名爲buduhuisi.key.org。
在命令行中執行以下命令以去除口令:
openssl rsa -in buduhuisi.key.org -out buduhuisi.key
而後輸入密碼,這個密碼就是上文中在建立私鑰的時候輸入的密碼。
在命令行中執行此命令:
openssl x509 -req -days 365 -in buduhuisi.csr -signkey buduhuisi.key -out buduhuisi.crt
至此,證書生成完畢。咱們發現,ssl文件夾中一共生成了4個文件。下面,配置https服務器的時候,咱們須要用到的是其中的buduhuisi.crt和buduhuisi.key這兩個文件。
個人這個文件在C:\nginx\conf目錄下。用任意一個編輯器(如Sublime Text之類)打開這個nginx.conf文件。
找到HTTPS server配置的那一段(即包含有listen 443 ssl配置那一段)。咱們發現這段代碼被註釋掉了。因此,首先咱們把該段代碼前面的#號去掉。而後分別修改其中的ssl_certificate和ssl_certificate_key配置項爲剛纔所生成的buduhuisi.crt和buduhuisi.key這兩個文件的目錄。並配置server_name爲localhost。修改後的該段配置以下:
server {
listen 443 ssl;
server_name localhost;
ssl_certificate C://nginx//ssl//buduhuisi.crt; # 這個是證書的crt文件所在目錄
ssl_certificate_key C://nginx//ssl//buduhuisi.key; # 這個是證書key文件所在目錄
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html; # 這個是指定一個項目所在目錄
index index.html index.htm; # 這個是指定首頁的文件名
}
}
注意一下那兩個證書的文件路徑的寫法。
在繼續後面的內容以前,先簡單介紹下Windows命令行中操做Nginx的幾個經常使用的語句:
start nginx # 啓動Nginx
nginx.exe -s stop # 快速中止Nginx,可能並不保存相關信息
nginx.exe -s quit # 完整有序的中止Nginx,並保存相關信息
nginx.exe -s reload # 從新載入Nginx,當配置信息修改,須要從新載入這些配置時使用此命令。
nginx.exe -s reopen # 從新打開日誌文件
nginx -v # 查看Nginx版本
由於修改了配置文件,因此須要退出控制檯,並從新打開一個控制檯。執行以下命令:
cd c:\nginx
nginx.exe -s quit
start nginx
即退出Nginx,而後再從新啓動它。這時候,在瀏覽器地址欄輸入https://localhost並回車。
這時候,你可能看到「您的鏈接不是私密鏈接」的提示,單擊頁面中的「高級」,並接着單擊「繼續前往m.test.com(不安全)」,就能夠看到Nginx的歡迎界面了。說明https服務器已經配置成功了。
若是你只想用https://localhost訪問這個https服務器,那麼下面的內容你就不用接着往下看了。
可是,也許你可能還想要用一個別的域名(例如:https://m.test.com)來訪問這個服務器。那麼怎麼作呢?這就須要繼續往下看了。
要想用別的域名來訪問上文配置好的https服務器,也很簡單,修改hosts配置就能夠了。你能夠到這裏下載一個hosts管理工具——SwitchHosts。安裝號好以後,以管理員身份運行它。並添加上一個hosts項:
127.0.0.1 m.test.com
這樣,你就能夠經過https://m.test.com來訪問配置好的https服務器了。
順便提一下,關於Mac環境下如何映射一個http路徑到一個https路徑,能夠經過Charles工具來實現。參見這裏。
轉自:http://mobilesite.github.io/2017/03/11/windows-nginx-https-config/