Aliyun ECS配置Nginx + HTTPS服務

阿里云官方給了個教程,但是按步驟一步步做下來,冒出來的“坑”比較多,折騰了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,這會兒說是不是有點晚???),如下圖所示。

取消原nginx.conf文件中443端口監(jiān)聽注釋,并更改ssl證書及key文件名

注:當然,你也可以順手把配置文件里代理80端口的那部分代碼注釋掉,不過只要ECS安全組沒有打開80端口訪問權限,用戶也是無法從80端口訪問到Nginx及后面的服務的。

7. 啟動Nginx


/usr/local/nginx/sbin/nginx

注:雖然這樣啟動有點丑,但平時畢竟用的比較少,所以就將就著這么用吧。

8. 檢查網(wǎng)絡端口監(jiān)聽


netstat -ntpl

顯示結果如下:


Nginx監(jiān)聽443端口(截圖時尚未在配置文件中注釋掉監(jiān)聽80端口)

9. 通過HTTPS訪問ECS的公網(wǎng)IP

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

訪問Nginx代理HTTPS請求的默認頁面

注:暫時不用關心瀏覽器提示的unsecure link提示。

10. 重新加載nginx配置

在重新加載新的Nginx配置前,建議不要直接restart,有必要先判斷下更改后的配置是否能夠運行正常:


cd usr/local/nginx/sbin/

./nginx -t -c /usr/loal/nginx/conf/nginx.conf

如果正常,將返回:


image.png

確認無誤后,重新加載:


/usr/nginx/sbin/nginx -s reload

不到之處,歡迎指正。

EOF

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容