nginx是一個開源的HTTP服務器,通過使用異步、事件驅動的方法,能夠更好的處理高負載的請求。而OpenSSL是一個強大的開源加密庫,可以提供安全的加密傳輸。
一、概述
nginxopenssl是nginx選擇OpenSSL作為加密庫的一種方式,可以將傳輸數據加密,增加安全性。使用nginxnginx同時安裝了OpenSSL,並且已經開啟了SSL模塊。
在配置之前,需要確保服務器上已經完成了以下兩個步驟:
1、 安裝nginx
sudo apt-get update
sudo apt-get install nginx
2、 安裝OpenSSL
sudo apt-get install openssl
二、配置
1、生成SSL證書
首先需要生成SSL證書,可以使用OpenSSL來創建自簽名的證書。
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
按照提示依次輸入證書相關信息,包括國家、省份、城市、組織名稱、通用名稱、電子郵件地址等。
2、配置nginx
打開nginx默認站點配置文件,通常是/etc/nginx/sites-available/default,並根據以下示例進行編輯:
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name example.com; #域名或IP地址
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; #ssl證書路徑
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; #ssl證書密鑰路徑
#其他nginx配置
}
這裡,listen指令用於監聽端口,443是HTTPS的默認端口號;server_name用於指定域名或IP地址;ssl_certificate和ssl_certificate_key分別指定SSL證書和密鑰的路徑。
3、重啟nginx
完成上述操作後,需要重啟nginx服務器以使配置生效。
sudo systemctl restart nginx
三、優化
以上配置生成的證書是自簽名的,不會被瀏覽器所信任,會彈出警告。要解決這個問題,有以下多種方式:
1、使用CA機構頒發的SSL證書
CA機構是全球通用的SSL證書頒發機構,通過CA機構簽發的SSL證書被大多數瀏覽器所信任。
2、使用Let』s Encrypt免費SSL證書
Let』s Encrypt是一家提供免費SSL證書的組織,可以通過Certbot工具輕鬆獲取SSL證書。安裝Certbot:
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx
安裝成功後可以通過以下命令獲取證書:
sudo certbot --nginx -d example.com -d www.example.com
這裡-d指令用於指定需要獲取證書的域名,可以同時指定多個域名。
3、啟用HTTP/2
HTTP/2是一種新的Web協議,相對於HTTP/1.x,HTTP/2可以減少頁面加載時間、節省帶寬資源等,可以用於優化服務器性能。
可以使用以下nginx配置將HTTP/2開啟:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
#其他nginx配置
}
由此可以看出,在開啟SSL的同時也可以開啟HTTP/2。
四、總結
nginxnginx與OpenSSL的結合是一種安全、高效、穩定的HTTP服務器方案。上述配置方法已經非常成熟,可以應對絕大多數的網站應用場景,而使用更優秀的證書和協議可以進一步提升服務器性能和安全性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/290968.html