當我們的內(nèi)容很有價值,并且我們關心用戶的隱私和安全時,我們可以使用 Nginx 來控制和保護對服務和數(shù)據(jù)的訪問。
SSL(安全套接字層)連接在將加密數(shù)據(jù)從客戶端計算機發(fā)送到網(wǎng)絡服務器之前使用證書進行身份驗證。
在本節(jié)中,我們將介紹如何在 NGINX 上配置 HTTPS 服務器。
要在我們的 nginx.conf 文件中設置 HTTPS 服務器,請將 ssl 參數(shù)添加到 server 塊中的 listen 指令,然后指定服務器證書和私鑰文件的位置:
server { listen 443 ssl; server_name www.jixiangtaizi.com.cn; ssl_certificate www.jixiangtaizi.com.cn.crt; ssl_certificate_key www.jixiangtaizi.com.cn.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; #... }
服務器證書是一個公共實體。它被發(fā)送到連接到 Nginx 的每個客戶端。
私鑰是安全的密鑰或實體,應存儲在訪問受限的文件中。但是 nginx 的 master 進程必須能夠讀取這個文件。我們還可以將私鑰存儲在與證書相同的文件中。
ssl_certificate www.jixiangtaizi.com.cn.cert; ssl_certificate_key www.jixiangtaizi.com.cn.cert;
ssl_protocol 和 ssl_ciphers 指令可用于要求客戶端在建立連接時使用的 SSL/TLS 版本和加密方案。
我們可以通過實施用戶名和密碼身份驗證來限制對我們網(wǎng)站或其某些部分的訪問。用戶名和密碼取自密碼文件創(chuàng)建工具(例如 apache2-utils)創(chuàng)建。
創(chuàng)建密碼文件
要創(chuàng)建用戶名-密碼對,請使用密碼文件創(chuàng)建實用程序,例如 httpd-tools 或 apache2-utils:
1. 首先,驗證是否安裝了 httpd-tools 或 apache2-utils。
2. 創(chuàng)建密碼文件和第一個用戶,運行帶有 -c 標志的 htpasswd 實用程序,用于創(chuàng)建新文件,文件路徑名作為第一個參數(shù),用戶名作為第二個參數(shù)。
$ sudo htpasswd -c /etc/apache2/.htpasswd user1
按 Enter 并在出現(xiàn)提示時輸入 user1 的密碼。
3. 創(chuàng)建額外的用戶名-密碼對。省略 -c 標志,因為文件已經(jīng)存在:
$ sudo htpasswd /etc/apache2/.htpasswd user2
4. 我們可以確保文件包含配對的用戶名和加密密碼:
$ cat /etc/apache2/.htpasswd user1:$apr1$/woC1jnP$KAh0SsVn5qeSMjTtn0E9Q0 user2:$apr1$QdR8fNLT$vbCEEzDj7LyqCMyNpSoBh/ user3:$apr1$Mr5A0e.U$0j39Hp5FfxRkneklXaMrr/
1. 在我們要保護的 location 內(nèi),定義 auth_basic 指令并為受密碼保護的區(qū)域命名。當要求提供憑據(jù)時,該區(qū)域的名稱將顯示在用戶名和密碼對話框中。
location /api { auth_basic "Administrator's Area"; #... }
2. 使用 auth_basic_user_file 指令指定包含用戶/密碼對的 .htpasswd 文件:
location /api { auth_basic "Administrator's Area"; auth_basic_user_file /etc/apache2/.htpasswd; }