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

從入門(mén)到生產(chǎn)級(jí)配置詳解Docker部署Nginx的實(shí)戰(zhàn)指南

 更新時(shí)間:2026年05月26日 08:42:20   作者:身如柳絮隨風(fēng)揚(yáng)  
Nginx 作為高性能的 HTTP 服務(wù)器和反向代理服務(wù)器,在 Web 架構(gòu)中占據(jù)著核心地位,本文將帶你從零開(kāi)始學(xué)習(xí)使用?Docker?容器化部署?Nginx?的完整流程,有需要的小伙伴可以了解下

1. 引言

Nginx 作為高性能的 HTTP 服務(wù)器和反向代理服務(wù)器,在 Web 架構(gòu)中占據(jù)著核心地位。傳統(tǒng)部署方式需要手動(dòng)安裝、配置環(huán)境、管理進(jìn)程,而 Docker 容器化部署則將這些復(fù)雜性封裝起來(lái),讓我們能夠快速啟動(dòng)、隔離運(yùn)行、輕松遷移。

本文將帶你從零開(kāi)始,掌握 Docker 部署 Nginx 的全流程:

  • 快速啟動(dòng) Nginx 容器并驗(yàn)證
  • 深入理解 Nginx 配置文件結(jié)構(gòu)
  • 掛載自定義配置、靜態(tài)文件、日志
  • 配置靜態(tài)站點(diǎn)、反向代理、負(fù)載均衡
  • 使用 Docker Compose 編排完整服務(wù)棧
  • 生產(chǎn)環(huán)境優(yōu)化與常見(jiàn)問(wèn)題排查

2. 快速部署:第一個(gè) Nginx 容器

2.1 拉取鏡像并運(yùn)行

# 拉取官方最新鏡像
docker pull nginx

# 運(yùn)行容器,映射端口 80
docker run -d --name my-nginx -p 80:80 nginx

參數(shù)說(shuō)明:

  • -d:后臺(tái)運(yùn)行
  • --name my-nginx:指定容器名
  • -p 80:80:將宿主機(jī) 80 端口映射到容器 80 端口

2.2 驗(yàn)證訪問(wèn)

打開(kāi)瀏覽器訪問(wèn) http://localhost,應(yīng)看到 Nginx 歡迎頁(yè)面?;蛘呤褂?curl:

curl http://localhost

3. Nginx 配置文件結(jié)構(gòu)概述

在深入自定義配置之前,先了解 Nginx 的配置文件體系:

核心要點(diǎn)

  • nginx.conf 是主配置文件,定義全局、事件、http 塊。
  • http 塊內(nèi)通常包含 include conf.d/*.conf;,將具體站點(diǎn)配置分離。
  • 每個(gè)站點(diǎn)(虛擬主機(jī))對(duì)應(yīng)一個(gè) server 塊,定義監(jiān)聽(tīng)端口、域名、路由規(guī)則。

Docker 官方鏡像的默認(rèn)配置文件位于容器內(nèi) /etc/nginx/nginx.conf,它已經(jīng)包含了 include /etc/nginx/conf.d/*.conf;。因此我們只需在 conf.d 目錄下添加自定義 *.conf 文件即可擴(kuò)展配置。

4. 自定義配置:掛載文件與目錄

Docker 部署的核心思想:將配置和靜態(tài)文件放在宿主機(jī),通過(guò)掛載覆蓋容器內(nèi)的對(duì)應(yīng)路徑。

4.1 準(zhǔn)備宿主機(jī)目錄結(jié)構(gòu)

假設(shè)我們?cè)谒拗鳈C(jī)上創(chuàng)建如下目錄:

~/nginx/
├── conf.d/
│   └── my-site.conf
├── html/
│   └── index.html
├── logs/
└── nginx.conf   (可選,一般不覆蓋主配置)

4.2 編寫(xiě)自定義 server 配置

創(chuàng)建 ~/nginx/conf.d/my-site.conf

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    # 錯(cuò)誤頁(yè)面
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

4.3 啟動(dòng)容器并掛載

docker run -d --name my-nginx \
  -p 80:80 \
  -v ~/nginx/conf.d:/etc/nginx/conf.d \
  -v ~/nginx/html:/usr/share/nginx/html \
  -v ~/nginx/logs:/var/log/nginx \
  nginx
  • -v ~/nginx/conf.d:/etc/nginx/conf.d:覆蓋默認(rèn)的 conf.d 目錄,里面可以放多個(gè) .conf 文件。
  • -v ~/nginx/html:/usr/share/nginx/html:掛載靜態(tài)文件目錄。
  • -v ~/nginx/logs:/var/log/nginx:掛載日志目錄,方便查看訪問(wèn)和錯(cuò)誤日志。

4.4 驗(yàn)證自定義頁(yè)面

~/nginx/html/index.html 中寫(xiě)入:

<h1>Hello from Docker Nginx!</h1>

刷新瀏覽器,即可看到自定義內(nèi)容。

5. 進(jìn)階配置:反向代理與負(fù)載均衡

Nginx 最常見(jiàn)的用途是作為反向代理,將請(qǐng)求轉(zhuǎn)發(fā)給后端服務(wù)(如 Spring Boot、Node.js)。

5.1 反向代理配置示例

修改 ~/nginx/conf.d/my-site.conf

server {
    listen 80;
    server_name api.example.com;

    location / {
        proxy_pass http://host.docker.internal:8080;   # 轉(zhuǎn)發(fā)到宿主機(jī) 8080 端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

注意:在 Linux 容器中訪問(wèn)宿主機(jī)服務(wù),可以使用 host.docker.internal(Docker 18.03+),或者使用宿主機(jī)的實(shí)際 IP。

5.2 負(fù)載均衡配置

使用 upstream 定義后端服務(wù)器組:

upstream backend {
    server backend1:8080 weight=3;
    server backend2:8080;
    server backend3:8080 backup;
}

server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
    }
}

weight 表示權(quán)重,backup 表示備用服務(wù)器。

6. Docker Compose 一站式部署

當(dāng) Nginx 作為前端網(wǎng)關(guān),需要與后端服務(wù)(如 API、數(shù)據(jù)庫(kù))配合時(shí),使用 Docker Compose 可以一鍵啟動(dòng)整個(gè)棧。

6.1 示例:Nginx + 兩個(gè)后端服務(wù)

創(chuàng)建 docker-compose.yml

version: '3.8'
services:
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "80:80"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./nginx/html:/usr/share/nginx/html
      - ./nginx/logs:/var/log/nginx
    depends_on:
      - backend1
      - backend2
    networks:
      - app-network
  backend1:
    image: your-backend:latest   # 替換為實(shí)際后端鏡像
    environment:
      - PORT=8080
    networks:
      - app-network
  backend2:
    image: your-backend:latest
    environment:
      - PORT=8080
    networks:
      - app-network
networks:
  app-network:
    driver: bridge

6.2 Nginx 配置文件(使用服務(wù)名)

nginx/conf.d/default.conf 中:

upstream backend {
    server backend1:8080;
    server backend2:8080;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
    }
}

關(guān)鍵點(diǎn):Docker Compose 會(huì)自動(dòng)為服務(wù)創(chuàng)建網(wǎng)絡(luò)別名,因此可以直接用服務(wù)名 backend1 作為主機(jī)名。

6.3 啟動(dòng)

docker-compose up -d

7. 生產(chǎn)環(huán)境優(yōu)化與安全

7.1 限制 CPU 和內(nèi)存

docker run -d --name nginx \
  --cpus="0.5" \
  --memory="512m" \
  -p 80:80 \
  nginx

或在 Compose 中:

services:
  nginx:
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 512M

7.2 配置 HTTPS(SSL)

將證書(shū)文件放在宿主機(jī)目錄,例如 ~/nginx/certs/。

掛載證書(shū)目錄:

-v ~/nginx/certs:/etc/nginx/certs

修改配置文件,添加 SSL 監(jiān)聽(tīng)和證書(shū)路徑:

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /etc/nginx/certs/example.crt;
    ssl_certificate_key /etc/nginx/certs/example.key;
    # ... 其他配置
}

7.3 日志輪轉(zhuǎn)

容器內(nèi) Nginx 日志輸出到 /var/log/nginx,掛載到宿主機(jī)后,可以使用宿主機(jī)的 logrotate 進(jìn)行輪轉(zhuǎn)。或者配置 Nginx 直接輸出到 stdout/stderr,由 Docker 日志驅(qū)動(dòng)管理:

access_log /dev/stdout;
error_log /dev/stderr;

這樣 docker logs nginx 就能看到日志。

7.4 健康檢查

docker-compose.yml 中添加:

services:
  nginx:
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 30s
      timeout: 10s
      retries: 3

8. 常見(jiàn)問(wèn)題排查

問(wèn)題原因解決方案
訪問(wèn) Nginx 得到 403 Forbidden靜態(tài)文件目錄權(quán)限不足確保宿主機(jī)掛載目錄有讀取權(quán)限,或使用 -u 指定用戶(hù)
修改配置后不生效容器未重載配置docker exec nginx nginx -s reload
端口被占用宿主機(jī) 80 端口已被其他進(jìn)程占用更換映射端口,如 -p 8080:80
容器內(nèi)無(wú)法解析 host.docker.internalDocker 版本過(guò)低或未啟用升級(jí) Docker,或在 Linux 下使用 --add-host host.docker.internal:host-gateway
反向代理到后端服務(wù)返回 502后端服務(wù)未啟動(dòng)或網(wǎng)絡(luò)不通檢查后端容器是否運(yùn)行,是否在同一網(wǎng)絡(luò)

9. 部署流程全景圖

10. 總結(jié)與最佳實(shí)踐

通過(guò) Docker 部署 Nginx,我們獲得了:

  • 環(huán)境一致性:開(kāi)發(fā)、測(cè)試、生產(chǎn)使用相同的鏡像和配置。
  • 快速擴(kuò)展:通過(guò) Compose 或 Swarm 輕松增加實(shí)例。
  • 隔離性:配置和日志掛載到宿主機(jī),方便管理。

最佳實(shí)踐總結(jié)

  • 永遠(yuǎn)使用官方鏡像,并指定版本標(biāo)簽(如 nginx:1.26)避免意外升級(jí)。
  • 將配置文件分離到 conf.d 目錄,保持主配置干凈。
  • 靜態(tài)文件、配置、日志均通過(guò)卷掛載,實(shí)現(xiàn)持久化和熱更新。
  • 生產(chǎn)環(huán)境啟用 HTTPS 和資源限制。
  • 使用 nginx -s reload 熱加載配置,無(wú)需重啟容器。
  • 配合 Docker Compose 管理多容器依賴(lài),使用服務(wù)名進(jìn)行內(nèi)部通信。

以上就是從入門(mén)到生產(chǎn)級(jí)配置詳解Docker部署Nginx的實(shí)戰(zhàn)指南的詳細(xì)內(nèi)容,更多關(guān)于Docker部署Nginx的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Docker常用的清除容器鏡像命令小結(jié)

    Docker常用的清除容器鏡像命令小結(jié)

    這篇文章主要給大家總結(jié)了Docker常用的清除容器鏡像命令,相信對(duì)大家的學(xué)習(xí)和工作具有一定的參考借鑒價(jià)值,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2016-12-12
  • docker pull鏡像報(bào)錯(cuò):‘invalid checksum digest format‘解決

    docker pull鏡像報(bào)錯(cuò):‘invalid checksum digest 

    鏡像推送/拉取報(bào)錯(cuò),排查發(fā)現(xiàn)倉(cāng)庫(kù)正常但Docker默認(rèn)連接443端口,配置了安全連接,最終因宿主機(jī)443端口被占用,停掉沖突服務(wù)后問(wèn)題解決
    2025-08-08
  • docker 限制容器對(duì)CPU的使用

    docker 限制容器對(duì)CPU的使用

    本篇文章主要介紹了docker 限制容器對(duì)CPU的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • docker離線安裝社區(qū)版(docker-18.06.3-ce)

    docker離線安裝社區(qū)版(docker-18.06.3-ce)

    在一些特定的環(huán)境下,由于網(wǎng)絡(luò)限制或者其他原因,我們可能需要在Linux系統(tǒng)上進(jìn)行離線安裝Docker,本文就來(lái)介紹一下docker離線安裝社區(qū)版,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • docker-compose部署zk+kafka+storm集群的實(shí)現(xiàn)

    docker-compose部署zk+kafka+storm集群的實(shí)現(xiàn)

    這篇文章主要介紹了docker-compose部署zk+kafka+storm集群,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • docker+gitlab+gitlab-runner部署詳解

    docker+gitlab+gitlab-runner部署詳解

    這篇文章主要介紹了docker+gitlab+gitlab-runner部署詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • docker清理大殺器/docker的overlay文件占用磁盤(pán)太大的解決

    docker清理大殺器/docker的overlay文件占用磁盤(pán)太大的解決

    這篇文章主要介紹了docker清理大殺器/docker的overlay文件占用磁盤(pán)太大的解決操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • Win10系統(tǒng)使用docker部署ragflow的實(shí)現(xiàn)

    Win10系統(tǒng)使用docker部署ragflow的實(shí)現(xiàn)

    本文主要介紹了Win10系統(tǒng)使用docker部署ragflow的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-05-05
  • harbor切換主機(jī),ip地址改變,需要對(duì)應(yīng)的修改harbor配置實(shí)踐

    harbor切換主機(jī),ip地址改變,需要對(duì)應(yīng)的修改harbor配置實(shí)踐

    文章講述了在切換主機(jī)IP地址后,需要修改Harbor配置文件以避免出現(xiàn)連接錯(cuò)誤,錯(cuò)誤的原因是Harbor的IP地址沒(méi)有更新,需要從舊IP(192.168.1.110)改為新IP(192.168.1.111),解決方法是編輯harbor.cfg文件并保存更改
    2026-03-03
  • 關(guān)于docker中?WSL?配置與修改問(wèn)題

    關(guān)于docker中?WSL?配置與修改問(wèn)題

    這篇文章主要介紹了docker中?WSL?配置與修改,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12

最新評(píng)論

贡觉县| 日土县| 锦屏县| 昭苏县| 尚志市| 梅河口市| 从江县| 台中市| 邵武市| 阳原县| 横峰县| 宁安市| 洛扎县| 扎赉特旗| 同心县| 姜堰市| 阿城市| 周口市| 平南县| 贞丰县| 乌兰浩特市| 深水埗区| 北川| 绿春县| 台江县| 东台市| 海盐县| 云阳县| 诸暨市| 广饶县| 木里| 和林格尔县| 秦皇岛市| 曲靖市| 余干县| 双城市| 衡东县| 盐山县| 三门峡市| 大埔区| 南溪县|