在容器环境中配置多个虚拟主机
利用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容器中。