Nginx配置ssl證書方式(https證書)
https協(xié)議是由SSL+http協(xié)議構(gòu)建的安全協(xié)議,支持加密傳輸和身份認證,
安全性比http要更好,因為數(shù)據(jù)的加密傳輸,更能保證數(shù)據(jù)的安全性和完整性。
安裝nginx
1.啟動容器
拉取鏡像
docker pull nanlist/nginx1.23.1:v1.0
新建目錄并授權(quán),/home/ssl-nginx/conf, /home/ssl-nginx/logs
- 執(zhí)行啟動命令:
docker run -d --privileged=true --name ssl-nginx -p 80:80 -p 443:443 -v /home/ssl-nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/ssl-nginx/logs:/var/log/nginx -d nanlist/nginx1.23.1:v1.0
2.查看日志
docker logs --tail=1000 ssl-nginx
3.Nginx 的 SSL 模塊安裝
- 進入容器:
docker exec -it ssl-nginx bash
- 查看ssl模塊默認是否已編譯:
nginx -V (注意大寫V)
編譯參數(shù)configure arguments: 中是否有 –with-http_ssl_module 這個模塊

配置
1.下載Nginx 服務證書
確定下文件有沒有準備好,一份SSL證書、一份對應的私鑰KEY文件(這里是用的 pem 與 key 文件)上傳到服務器上,編輯conf的時候注意你的這倆文件名字,跟跟服務器上的一致。
- ssl.pem;
- ssl.key;
把這兩個文件cp到容器內(nèi)部的目錄里面(先進入容器 建好目錄/home/ssl-nginx 或者 啟動容器的時候 -v 掛載一個文件目錄也可以)
docker cp /home/ssl-nginx/conf/ssl.pem ssl-nginx:/etc/nginx docker cp /home/ssl-nginx/conf/ssl.key ssl-nginx:/etc/nginx docker exec -i ssl-nginx nginx -t docker exec -i ssl-nginx nginx -s reload
2.配置nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
client_max_body_size 100m;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
#監(jiān)聽的端口,nginx 1.15.0及以上版本,使用listen 443 ssl代替,1.15.0以下的使用listen 443
listen 443 ssl;
server_name localhost;
charset utf-8;
# ssl證書地址
#指定pem文件所在路徑,如果寫相對路徑,必須把該文件和nginx.conf文件放到一個目錄下。
ssl_certificate ssl.pem;
#指定私鑰文件key所在路徑,如果寫相對路徑,必須把該文件和nginx.conf文件放到一個目錄下。
ssl_certificate_key ssl.key;
# ssl驗證相關配置
ssl_session_timeout 5m; #緩存有效期
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全鏈接可選的加密協(xié)議
ssl_prefer_server_ciphers on; #使用服務器端的首選算法
location / {
root /home/ruoyi-ui/dist;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://10.56.1.75:8080/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#配置80端口重定向443端口
server {
listen 80;
server_name localhost;
#用地址重寫規(guī)則
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
}
配置完成后:
- nginx -t;測試配置文件是否正確,再使用命令:
docker exec -i ssl-nginx nginx -t
- nginx -s reload; 加載nginx的配置文件并重啟
docker exec -i ssl-nginx nginx -s reload
- 查看日志
docker logs --tail=1000 ssl-nginx
3.在瀏覽器中輸入:https://域名地址,驗證SSL是否配置成功
ps: 一個SSL證書只能對應一個端口嗎 ?
443端口只是SSL證書的默認端口,SSL證書也是支持其他非443自定義端口的。
多個端口的nginx 在同一個ip地址里面是可以使用同一個ssl 證書的。
啟動docker容器的時候 換一下 端口號,剩下的步驟都是一樣的(無需修改conf里面的端口號)。
ps:服務器報警:啟用了不安全的TLS1.0協(xié)議
最近在使用過程中,進行安全漏掃的時候報了這個警告。
TLS 1.0是于1996年發(fā)布的老版協(xié)議,使用的是弱加密算法和系統(tǒng)。比如SHA-1和MD5,這些算法和系統(tǒng)十分脆弱,存在重大安全漏洞,容易受到降級攻擊的嚴重影響。
修復方法:
將conf文件中的ssl_protocols 改為 TLSv1.2 TLSv1.3
ssl_protocols TLSv1.2 TLSv1.3;
若配置文件里面沒有ssl_protocols 則在開啟了 ssl 的配置文件里面 添加上面那行代碼

然后重啟nginx。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
通過Nginx實現(xiàn)前端與后端的協(xié)同部署
在現(xiàn)代 web 開發(fā)中,前端與后端的協(xié)同部署是一個關鍵問題,一個高效的部署策略不僅能提升用戶體驗,還能簡化開發(fā)流程,今天,我們就來探討如何利用 Nginx 實現(xiàn)前端與后端的協(xié)同部署,需要的朋友可以參考下2025-03-03
nginx禁止dedecms目錄php執(zhí)行權(quán)限
nginx禁止dedecms目錄php執(zhí)行權(quán)限,找到配置fastcgi.conf文件,一般在/usr/local/nginx/conf/下面,修改如下2014-01-01
CentOS6使用nginx搭建web網(wǎng)站服務的方法
這篇文章主要介紹了CentOS6使用nginx搭建web網(wǎng)站服務的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07
nginx中的proxy_set_header參數(shù)指令詳解
本文介紹了Nginx中的proxy_set_header指令,用于自定義代理請求的HTTP頭部信息,實現(xiàn)更靈活的反向代理功能,提供了實際應用場景和配置示例,幫助讀者更好地理解和使用proxy_set_header指令,感興趣的朋友一起看看吧2025-03-03
Ubuntu系統(tǒng)下的Nginx服務器軟件安裝時的常見錯誤解決
這篇文章主要介紹了Ubuntu系統(tǒng)下的Nginx服務器軟件安裝時的常見問題解決,包括徹底卸載Nginx的方法介紹,需要的朋友可以參考下2016-03-03

