Docker部署Nginx 以及Nginx的基本使用

发布于:2025-05-15 ⋅ 阅读:(11) ⋅ 点赞:(0)

如何使用Docker部署和配置Nginx:从拉取镜像到挂载配置

Nginx是一个高性能的HTTP和反向代理服务器,广泛应用于Web服务、负载均衡和静态资源托管等领域。通过Docker部署Nginx可以简化环境配置和管理。本文将详细介绍如何拉取Nginx镜像、创建容器、挂载配置文件以及管理Nginx服务。


1. 拉取Nginx镜像

首先,从Docker Hub拉取指定版本的Nginx镜像。例如,拉取1.16.1版本的Nginx:

docker pull nginx:1.16.1

2. 创建挂载目录

为了持久化Nginx的配置、日志和静态资源文件,需要在宿主机上创建挂载目录:

mkdir -p /home/nginx/{conf,log,html}

3. 从容器中复制配置文件

先运行一个临时Nginx容器,将容器中的配置文件复制到宿主机挂载目录:

docker run --name nginx -p 80:80 -d nginx:1.16.1

# 复制配置文件
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /home/nginx/

复制完成后,停止并删除临时容器:

docker stop nginx
docker rm -f nginx

4. 创建并运行Nginx容器

使用挂载目录启动Nginx容器,持久化配置和资源文件:

docker run \
-p 9002:80 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:1.16.1

参数说明

  • -p 9002:80:将容器的80端口映射到宿主机的9002端口。
  • --name nginx:指定容器名称为nginx
  • -v:挂载配置文件、日志和静态资源目录。
  • -d:后台运行容器。

一篇文章学会Nginx的基本使用

Nginx作为一款高性能的Web服务器和反向代理服务器,广泛应用于生产环境。以下介绍Nginx的常用命令、配置文件结构和具体应用场景。


1. Nginx常用命令
nginx -v       # 查看Nginx版本
nginx -t       # 检查配置文件是否正确
nginx -s stop  # 停止Nginx
nginx -s reload # 重新加载配置文件
docker restart nginx # 重启Nginx容器

2. Nginx配置文件结构

Nginx配置文件通常包含以下部分:

  1. 全局块:配置Nginx运行的全局参数,如用户、进程数、日志路径等。
  2. events块:配置网络连接相关参数,如最大连接数。
  3. http块:代理、缓存、日志记录、虚拟主机等配置。
  4. server块:配置具体站点的监听端口、域名等。
  5. location块:配置URL路径的匹配规则和处理方式。

示例配置文件:

# 全局块
user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

# events块
events {
    worker_connections  1024;
}

# http块
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    keepalive_timeout  65;
    include /etc/nginx/conf.d/*.conf;

    # server块
    server {
        listen       80;
        server_name  localhost;

        # location块
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
}

3. Nginx具体应用
  1. 部署静态资源
    Nginx可以将静态资源(如HTML、CSS、JS、图片)高效地部署和提供给用户。
    示例配置:
server {
    listen 80;
    server_name localhost;
    location / {
        root /usr/share/nginx/html;
        index index.html;
    }
}
  1. 反向代理
    Nginx可以将客户端请求转发到后端服务器,隐藏目标服务器的地址。
    示例配置:
server {
    listen 82;
    server_name localhost;
    location / {
        proxy_pass http://192.168.138.101:8080;
    }
}
  1. 负载均衡
    Nginx可以将请求分发到多个后端服务器,提高系统的可用性和性能。
    示例配置:
upstream targetserver {
    server 192.168.138.101:8080 weight=10;
    server 192.168.138.101:8081 weight=5;
}

server {
    listen 8080;
    server_name localhost;
    location / {
        proxy_pass http://targetserver;
    }
}

负载均衡策略

  • 轮询(默认)
  • 权重(weight)
  • IP哈希(ip_hash)
  • 最少连接(least_conn)
  • URL哈希(url_hash)

结语

通过本文,你可以快速掌握如何在Docker中部署Nginx、挂载配置文件,以及Nginx的基本使用方法和应用场景。希望这些内容能够帮助你更好地管理和优化Web服务。