阿里云官方給了個教程,但是按步驟一步步做下來,冒出來的“坑”比較多,折騰了2個小時把坑填上,記錄一下用作備忘。阿里云官方給出的教程:CentOS 7.4 實例配置 Nginx + HTTPS 服務
0. 預備知識
假設讀者已經(jīng)對ECS的安全組添加了443端口可訪問。
安裝時,可能需要以ECS實例的root用戶登錄或者sudo??梢允褂胹u命令進行用戶切換。
1. 預安裝
按照一般流程,首先需要安裝PCRE和zlib的第三方庫。
PCRE是一系列實現(xiàn)了正則表達式模式匹配的函數(shù)集,參照了Perl的語法和語義。
zlib是一種無損數(shù)據(jù)壓縮格式,zlib-devel是一個開源庫,包含一些頭文件和實現(xiàn)(我猜可能是C寫的吧,沒有仔細查),可用于開發(fā)一些使用zlib格式的程序。
yum -y **install** pcre pcre-devel
yum -y **install** zlib-devel
2. 切換目錄
可根據(jù)自己需要切換到合適的目錄下,通常建議在非admin的普通用戶目錄下。
cd /usr/local/
該目錄將作為我們下載nginx及OpenSSL源碼壓縮包并解壓的根目錄。
3. 下載OpenSSL及Nginx源碼壓縮包
OpenSSL用于生成服務器端的密鑰證書。
wget [https://www.openssl.org/source/openssl-1.1.0g.tar.gz](https://www.openssl.org/source/openssl-1.1.0g.tar.gz)
tar -xvzf openssl-1.1.0g.tar.gz
Nginx源碼壓縮包下載。注:阿里云官網(wǎng)教程給出的Nginx版本在編譯時出現(xiàn)某條deprecated日志,初步判斷是版本問題,于是重新在Nginx官網(wǎng)上隨便找了一個看樣子later and more stable的版本。-_-!
wget [http://nginx.org/download/nginx-1.13.9.tar.gz](http://nginx.org/download/nginx-1.13.9.tar.gz)
tar -xvf nginx-1.13.9.tar.gz
4. 編譯
cd nginx-1.13.9 # 注意:這里是切換到Nginx解壓后的文件目錄下
# 調(diào)用目錄下configure腳本命令
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module --with-openssl=/usr/local/openssl-1.1.0g
make && make install
注:—prefix=/usr/local/nginx參數(shù)值將在make成功后生成為Nginx程序的文件目錄。
本例中,命令編譯成功后,將會在/usr/local/下新增nginx文件夾,nginx程序即在該目錄下。
5. 生成證書和密鑰
cd /usr/local/nginx/conf #配置文件目錄
openssl req -new -x509 -nodes -out server.crt -keyout server.key #按下回車后,按照提示輸入信息,生成server.crt和server.key文件,將用于配置nginx監(jiān)聽443端口
官方教程中的一個問題就是證書和密鑰的路徑存放位置。應該與后面將要介紹的nginx.conf配置文件同一目錄下。
6. 更改Nginx的SSL配置
打開nginx配置文件nginx.conf。
vi /usr/local/nginx/conf/nginx.conf
取消server條目下的注釋,并更新證書和密鑰文件名(參照step 5生成的文件名,當然,你也可以按照配置文件中默認文件名重復step 5,這會兒說是不是有點晚???),如下圖所示。

注:當然,你也可以順手把配置文件里代理80端口的那部分代碼注釋掉,不過只要ECS安全組沒有打開80端口訪問權限,用戶也是無法從80端口訪問到Nginx及后面的服務的。
7. 啟動Nginx
/usr/local/nginx/sbin/nginx
注:雖然這樣啟動有點丑,但平時畢竟用的比較少,所以就將就著這么用吧。
8. 檢查網(wǎng)絡端口監(jiān)聽
netstat -ntpl
顯示結果如下:

9. 通過HTTPS訪問ECS的公網(wǎng)IP
掏出你的ECS公網(wǎng)IP,加上https://前綴。如果順利的話,應該能看到下圖所示。

注:暫時不用關心瀏覽器提示的
unsecure link提示。
10. 重新加載nginx配置
在重新加載新的Nginx配置前,建議不要直接restart,有必要先判斷下更改后的配置是否能夠運行正常:
cd usr/local/nginx/sbin/
./nginx -t -c /usr/loal/nginx/conf/nginx.conf
如果正常,將返回:

確認無誤后,重新加載:
/usr/nginx/sbin/nginx -s reload
不到之處,歡迎指正。
EOF