最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何在Docker環(huán)境下為Nginx配置HTTPS

 更新時間:2024年11月18日 14:40:53   作者:lzz的編碼時刻  
如何在Docker環(huán)境下為Nginx配置HTTPS,使用自簽名證書實(shí)現(xiàn)加密通信,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧

前言

配置HTTPS已經(jīng)成為網(wǎng)站部署的必要步驟。本教程將詳細(xì)介紹如何在Docker環(huán)境下為Nginx配置HTTPS,使用自簽名證書來實(shí)現(xiàn)加密通信。雖然在生產(chǎn)環(huán)境中建議使用權(quán)威CA機(jī)構(gòu)頒發(fā)的證書,但在開發(fā)測試或內(nèi)網(wǎng)環(huán)境中,自簽名證書是一個很好的選擇。

前置條件

在開始之前,確保系統(tǒng)已經(jīng)安裝:

Docker(建議版本 20.10 或更高)OpenSSL(用于生成證書)

可以通過以下命令檢查版本:

docker --version
openssl version

一、項目結(jié)構(gòu)

項目的目錄結(jié)構(gòu):

project/
├── Dockerfile
├── nginx/
│   ├── nginx.conf                # Nginx主配置文件
│   ├── conf.d/
│   │   └── default.conf         # 默認(rèn)站點(diǎn)配置
│   └── ssl/                     # 將要創(chuàng)建的SSL證書目錄
│       ├── nginx.crt            # 證書文件
│       └── nginx.key            # 私鑰文件
├── source/
    └── dist/                    # 編譯后的靜態(tài)文件

二、生成自簽名證書

2.1 創(chuàng)建證書目錄

# 在項目根目錄下執(zhí)行
mkdir -p nginx/ssl
cd nginx/ssl

2.2 生成SSL證書和私鑰

使用OpenSSL生成自簽名證書。這個過程分為幾個步驟:

生成私鑰:

openssl genrsa -out nginx.key 2048

生成證書簽名請求(CSR):

openssl req -new -key nginx.key -out nginx.csr \
    -subj "/C=CN/ST=YourState/L=YourCity/O=YourCompany/OU=IT Department/CN=your-domain.com"

參數(shù)說明:

  • /C:國家代碼(例如CN代表中國)
  • /ST:省/州名
  • /L:城市名
  • /O:組織名稱
  • /OU:部門名稱
  • /CN:域名

使用私鑰簽名證書:

openssl x509 -req -days 3650 \
    -in nginx.csr \
    -signkey nginx.key \
    -out nginx.crt

2.3 設(shè)置正確的權(quán)限

chmod 600 nginx.key
chmod 644 nginx.crt

三、配置Nginx

3.1 創(chuàng)建新的Nginx配置文件

編輯 nginx/conf.d/default.conf

# HTTP服務(wù)器(重定向到HTTPS)
server {
    listen 80;
    listen [::]:80;
    server_name localhost;  # 在實(shí)際環(huán)境中替換為你的域名
    # 將所有HTTP請求重定向到HTTPS
    return 301 https://$server_name$request_uri;
}
# HTTPS服務(wù)器
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name localhost;  # 在實(shí)際環(huán)境中替換為你的域名
    # SSL證書配置
    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;
    # SSL會話配置
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;
    # SSL協(xié)議配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    # HSTS配置(如果需要)
    # add_header Strict-Transport-Security "max-age=63072000" always;
    # 靜態(tài)文件配置
    location / {
        root   /opt/dist;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
    # 錯誤頁面配置
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

3.2 修改Dockerfile

編輯項目根目錄下的Dockerfile:

FROM nginx:stable
# 復(fù)制Nginx配置文件
COPY ./nginx/nginx.conf /etc/nginx/nginx.conf
COPY ./nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf
# 復(fù)制SSL證書
COPY ./nginx/ssl/nginx.crt /etc/nginx/ssl/
COPY ./nginx/ssl/nginx.key /etc/nginx/ssl/
# 復(fù)制應(yīng)用文件
COPY ./source/dist /opt/dist/
# 設(shè)置時區(qū)
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 設(shè)置證書權(quán)限
RUN chmod 600 /etc/nginx/ssl/nginx.key \
    && chmod 644 /etc/nginx/ssl/nginx.crt
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["nginx", "-g", "daemon off;"]

四、構(gòu)建和運(yùn)行

4.1 構(gòu)建Docker鏡像

# 在項目根目錄下執(zhí)行
docker build -t my-nginx-ssl:v1 .

4.2 運(yùn)行容器

docker run -d \
    --name my-nginx-ssl \
    -p 80:80 \
    -p 443:443 \
    my-nginx-ssl:v1

4.3 驗證配置

檢查容器是否正常運(yùn)行:

docker ps

查看容器日志:

docker logs my-nginx-ssl

測試HTTPS連接:

curl -k https://localhost

4.4 成功訪問

ps:可以直接使用 https://ip+端口 如果使用域名要先在hosts文件中添加

五、常見問題解決

5.1 證書不受信任警告

在使用自簽名證書時,瀏覽器會顯示證書不受信任的警告,這是正常的。你可以:

在開發(fā)環(huán)境中,點(diǎn)擊"高級"然后"繼續(xù)前往"(具體文字根據(jù)瀏覽器不同可能有所差異)將證書添加到系統(tǒng)的受信任證書存儲中在生產(chǎn)環(huán)境中使用受信任的CA機(jī)構(gòu)頒發(fā)的證書 5.2 無法訪問HTTPS

如果無法訪問HTTPS站點(diǎn),請檢查:

端口映射是否正確:

docker port my-nginx-ssl

防火墻是否開放443端口:

# Linux系統(tǒng)
sudo ufw status
# 如果需要開放端口
sudo ufw allow 443

證書文件權(quán)限是否正確:

# 進(jìn)入容器檢查
docker exec -it my-nginx-ssl bash
ls -l /etc/nginx/ssl/

5.3 配置測試

在應(yīng)用到生產(chǎn)環(huán)境之前,可以使用以下命令測試Nginx配置:

# 進(jìn)入容器
docker exec -it my-nginx-ssl bash
# 測試Nginx配置
nginx -t

六、安全建議

  • 定期更新證書
  • 使用強(qiáng)密碼算法
  • 啟用HTTP/2
  • 配置適當(dāng)?shù)腟SL會話緩存
  • 考慮啟用HSTS
  • 定期更新Nginx版本以修復(fù)安全漏洞

七、維護(hù)建議

證書更新

# 生成新證書
openssl x509 -req -days 365 \
    -in nginx.csr \
    -signkey nginx.key \
    -out nginx.crt.new
# 備份舊證書
mv /etc/nginx/ssl/nginx.crt /etc/nginx/ssl/nginx.crt.old
mv nginx.crt.new /etc/nginx/ssl/nginx.crt
# 重啟Nginx
nginx -s reload

日志檢查

# 查看訪問日志
tail -f /var/log/nginx/access.log
# 查看錯誤日志
tail -f /var/log/nginx/error.log

總結(jié)

  • 生成自簽名SSL證書
  • 配置Nginx支持HTTPS
  • 使用Docker部署HTTPS服務(wù)
  • 常見問題的解決方法
  • 維護(hù)操作

自簽名證書適用于開發(fā)和測試環(huán)境。在生產(chǎn)環(huán)境中,建議使用受信任的CA機(jī)構(gòu)頒發(fā)的證書。

到此這篇關(guān)于在Docker環(huán)境下為Nginx配置HTTPS的文章就介紹到這了,更多相關(guān)Docker Nginx配置HTTPS內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker搭建logstash和使用方法詳解

    docker搭建logstash和使用方法詳解

    這篇文章主要介紹了docker搭建logstash和使用方法詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12
  • Docker提示permission?denied錯誤的解決方案

    Docker提示permission?denied錯誤的解決方案

    這篇文章主要給大家介紹了關(guān)于Docker提示permission?denied錯誤的解決方案,出現(xiàn)這個問題是因為宿主機(jī)的當(dāng)前運(yùn)行用戶和docker容器里面的運(yùn)行用戶不一致導(dǎo)致訪問權(quán)限問題,需要的朋友可以參考下
    2023-08-08
  • linux上安裝Docker(非常簡單的安裝方法)

    linux上安裝Docker(非常簡單的安裝方法)

    今天小編就為大家分享一篇關(guān)于linux上安裝Docker(非常簡單的安裝方法),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • docker打造Ubuntu20.04 ssh遠(yuǎn)程連接鏡像的實(shí)現(xiàn)

    docker打造Ubuntu20.04 ssh遠(yuǎn)程連接鏡像的實(shí)現(xiàn)

    本文主要介紹了docker打造Ubuntu20.04 ssh遠(yuǎn)程連接鏡像的實(shí)現(xiàn),再也不用電腦上裝了一堆的軟件(mysql、redis、elk等),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-07-07
  • Docker掛載的三種方法及使用場景分析

    Docker掛載的三種方法及使用場景分析

    在Docker容器中,持久化存儲和數(shù)據(jù)共享是非常重要的功能,Docker提供了三種主要的方法來實(shí)現(xiàn)宿主機(jī)和容器之間的數(shù)據(jù)掛載,本文將詳細(xì)介紹這三種方法的基本語法,并探討它們各自的使用場景,需要的朋友可以參考下
    2024-05-05
  • 詳解Centos7 下建立 Docker 橋接網(wǎng)絡(luò)

    詳解Centos7 下建立 Docker 橋接網(wǎng)絡(luò)

    本篇文章主要介紹了詳解Centos7 下建立 Docker 橋接網(wǎng)絡(luò),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 解決calico-apiserver認(rèn)證失敗問題

    解決calico-apiserver認(rèn)證失敗問題

    文章解決Calico APIServer狀態(tài)異常和命名空間刪除報錯問題,指出需在三臺Master節(jié)點(diǎn)修改kube-apiserver的--requestheader-allowed-names參數(shù),允許aggregator CN,此參數(shù)控制聚合層代理連接的客戶端證書CN白名單
    2025-09-09
  • 基于?Docker?和?Flask?構(gòu)建高并發(fā)微服務(wù)架構(gòu)的實(shí)現(xiàn)

    基于?Docker?和?Flask?構(gòu)建高并發(fā)微服務(wù)架構(gòu)的實(shí)現(xiàn)

    本文主要介紹了基于?Docker?和?Flask?構(gòu)建高并發(fā)微服務(wù)架構(gòu),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • docker打包python鏡像的全教程分享

    docker打包python鏡像的全教程分享

    Docker是一種開源的容器化平臺,可以讓開發(fā)者將應(yīng)用程序和其依賴項打包到一個可移植的容器中,然后在不同的環(huán)境中運(yùn)行,本文主要給大家介紹了docker打包python鏡像全教程,需要的朋友可以參考下
    2024-02-02
  • docker配置node項目的實(shí)現(xiàn)步驟

    docker配置node項目的實(shí)現(xiàn)步驟

    本文主要介紹了docker配置node項目的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01

最新評論

五台县| 方正县| 和顺县| 江源县| 全椒县| 朝阳县| 长春市| 诸城市| 文昌市| 遂昌县| 花莲县| 苗栗市| 涟水县| 绥中县| 伊宁市| 平泉县| 洛浦县| 宁陕县| 许昌市| 彭山县| 万年县| 营山县| 霍邱县| 大同县| 河津市| 壤塘县| 德保县| 青龙| 双流县| 苏尼特左旗| 罗源县| 井陉县| 兴安盟| 仲巴县| 凤台县| 灵石县| 昌乐县| 华宁县| 基隆市| 四平市| 诸城市|