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

Nginx 简介

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

Nginx 的应用场景

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

容器编排

服务器 IP:192.168.230.130

  • 创建 docker-compose.yml

    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
    
  • 启动容器

    $ 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 配置文件

    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

    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
    
  • 启动容器

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

  • 文章作者:彭超

  • 本文首发于个人博客:https://antoniopeng.com/2019/09/08/nginx/%E4%BD%BF%E7%94%A8DockerCompose%E9%83%A8%E7%BD%B2Nginx%E9%85%8D%E7%BD%AE%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA/

  • 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 彭超 | Blog

原文地址:https://www.cnblogs.com/antoniopeng/p/12687444.html