记录一些常用的函数和瞎折腾的过程……

在容器环境中配置多个虚拟主机

提醒:本文最后更新于 1205 天前,文中所描述的信息可能已发生改变,请谨慎使用。

利用docker容器技术,可以让我们很方便的搭建服务,完全可以用“招之即来,挥之即去”形容。比如搭建网站,需要建立3个容器:nginx、php、mysql,通过docker技术安装这个三服务都是分分钟的事,如果自行编译,需要的时间就非常多了。

和传统的LNMP环境相比,使用容器服务如何配置多个虚拟主机呢?这个也很简单,本着一个容器提供一个服务的原则,我安装了nginx、php、mysql这3个容器。下面我就说一下配置。

1、nginx容器打开了端口:-p 80:80和-p 443:443,该容器名为nginx;

2、mysql容器打开了端口:-p 3306:3306,该容器名为mysql;

3、php容器打开了端口:-p 9000:9000,该容器名为php;

4、最关键的就是配置nignx网站文件了,在配置文件目录内新建1个虚拟主机的配置文件:yourname.conf,我写的配置内容如下:

server {
  listen 80;
  server_name www.yourdomain.com;
  return 301 https://www.yourdomain.com$request_uri;
}

server {
  listen 443 ssl http2;
  server_name www.yourdomain.com;

  # 配置ssl,存放目录为nginx容器目录
  ssl_certificate /etc/nginx/SSL/yourdomain.cer;
  ssl_certificate_key /etc/nginx/SSL/yourdomain.key;
  ssl_session_timeout 5m;
  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_prefer_server_ciphers on;
  ssl_ciphers HIGH:!aNULL:!MD5;
  ssl_session_cache builtin:1000 shared:SSL:10m;

  # Allow large attachments
  client_max_body_size 128M;

  # nginx虚拟主机根目录,注意此处root为nginx容器中指定的虚拟主机的根目录
  location / {
    root /usr/share/nginx/html/website;
    index index.html index.php;
  }

  # php文件交由php容器处理,注意此处root为php容器中指定的虚拟主机的分目录
  location ~ [^/]\.php(/|$) {
    root /var/www/html/website;
    # 反向代理到php容器(此处php为容器名,也可以为php容器的ip,端口为容器开放的端口9000)
    fastcgi_pass php:9000;
    fastcgi_index index.php;
    # php的root目录
    fastcgi_param SCRIPT_FILENAME /var/www/html/website$fastcgi_script_name;
    include fastcgi_params;
  }

  # 生成日志,目录为nginx容器中默认目录
  access_log /var/log/nginx/website.log;
}

注意:建立容器时,宿主主机的web目录请同时挂载到php容器和nginx容器的web目录,这样在宿主主机中修改网站文件会同时同步到php容器和nginx容器中。