使用 Docker Compose 部署 Nginx 配置虚拟主机

Posted by 彭超 on 2019-09-08
Estimated Reading Time 3 Minutes
Words 748 In Total
Viewed Times

Nginx 简介

Nginx 是一款高性能的 HTTP 服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。官方测试 Nginx 能够支撑 5 万并发链接,并且 CPU、内存等资源消耗却非常低,运行非常稳定。
 

Nginx 的应用场景

  • HTTP 服务器:Nginx 是一个 HTTP 服务可以独立提供 HTTP 服务。可以做网页静态服务器。
  • 虚拟主机:可以实现在一台服务器虚拟出多个网站。
  • 反向代理 + 负载均衡:当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用 Nginx 做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

容器编排

服务器 IP:192.168.230.130

  • 创建 docker-compose.yml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    version: '3.1'
    services:
    nginx:
    restart: always
    image: nginx
    container_name: nginx
    ports:
    - 80:80
    volumes:
    - ./conf/nginx.conf:/etc/nginx/nginx.conf
    - ./wwwroot:/usr/share/nginx/wwwroot
  • 启动容器

    1
    $ docker-compose up -d
  • 打开浏览器访问 192.168.230.130

什么是虚拟主机

虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供 www 服务,这样就可以实现一台主机对外提供多个 web 服务,每个虚拟主机之间是独立的,互不影响的。

通过 Nginx 可以实现虚拟主机的配置,Nginx 支持三种类型的虚拟主机配置

  • 基于 IP 的虚拟主机
  • 基于域名的虚拟主机
  • 基于端口的虚拟主机

功能需求

  • Nginx 服务器:192.168.230.130
  • Nginx 对外提供 808080 两个端口监听服务
  • 请求 80 端口则请求 html80 目录下的 html
  • 请求 8080 端口则请求 html8080 目录下的 html

配置 Nginx 虚拟主机

  • /usr/local/docker/nginx/wwwroot 目录下创建 html80html8080 两个目录,并分别创建两个 index.html 文件

  • /usr/local/docker/nginx/conf 目录下创建 nginx.conf,挂载 Nginx 配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    user  nginx;
    # 指定使用 CPU 资源数量
    worker_processes 1;

    events {
    # 连接数
    worker_connections 1024;
    }

    http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;

    # 虚拟主机一配置
    server {
    # 指定端口
    listen 80;
    # 指定 IP (可以是域名)
    server_name 192.168.230.130;
    location / {
    # 虚拟主机内的资源访问路径
    root /usr/share/nginx/wwwroot/html8080;
    # 首页
    index index.html index.htm;
    }
    }

    # 虚拟主机二配置
    server {
    listen 8080;
    server_name 192.168.230.130;
    location / {
    root /usr/share/nginx/wwwroot/html8080;
    index index.html index.htm;
    }
    }
    }

    每个 server 节点代表一个虚拟主机

  • 创建 docker-compose.yml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    version: '3.1'
    services:
    nginx:
    restart: always
    image: nginx
    container_name: nginx
    ports:
    - 80:80
    volumes:
    - ./conf/nginx.conf:/etc/nginx/nginx.conf
    - ./wwwroot:/usr/share/nginx/wwwroot
  • 启动容器

    1
    $ docker-compose up -d
  • 打开浏览器分别访问 192.168.230.130192.168.230.130:8080


If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !