当服务器上同时运行多个网页应用时,为确保数据传输的安全性,为每个应用配置HTTPS协议是必不可少的。本文将以两个典型场景为例进行说明:一是使用WordPress搭建的网站,二是基于Docker部署的超级马里奥网页游戏。通过这两个实例,我们将详细介绍如何为不同的网页应用申请和配置HTTPS证书,从而实现安全的加密通信。


准备:
2. 1panel平台安装:
ubuntu系统
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
RedHat / CentOS系统
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh
Debian系统
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh
3.在1panel平台内依次安装安装Openrety、wordpress、Mysql,
4.到腾讯云或者阿里云平台购买一个域名,然后将购买域名解析到当前服务器上。

5、https协议的配置
(1)基于wordpress搭建的网站ssl证书申请
对于新手用户来说,需要在1panle证书界面内先注册一个Acme账户,然后输入你的邮箱,即可完成Acme账户的创建:


随后按照下图所示的演示步骤填写完申请SSL证书的相关选项


最后就是为使用wordpress搭建的网站配置ssl证书,


(2)如何为基于docker容器构建的超级马里奥游戏配置https协议
使用下面的命令可一键在服务器上部署超级马里奥游戏:
docker run -d -p 7777:8080 --name maliao --restart=always langjudy/mario
运行下面的命令可将申请ssl工具的certbot安装到服务器上:
sudo apt update
sudo apt install certbot
在正式申请ssl证书之前,我们需要先让容器openrety停止运行,因为在申请ssl证书过程中将会使用到80端口,而openrety正好运行在80端口上。

随后运行下面的命令来完成相应网站ssl证书的申请(请先确保你申请的另外一个域名解析出来的地址也指向本服务器),
sudo certbot certonly --standalone -d example.com #这里的example.com 为演示地址,你需要将其替换为你的真实域名
运行成功后,你为当前应用游戏申请的域名证书位于以下文件路径内:
/etc/letsencrypt/archive/example.com #这里的example.com 为演示地址,你需要将其替换为你的真实域名
接下来,你需要将这个证书所在地址以卷的形式挂载到正在运行的openrety容器内,具体做法如下,找打目标容器后,点击更多找到编辑,随后按照下图所示进行操作即可


随后点击确定!
在服务器终端输入下列命令进入到openrety容器内部:
docker exec -it openrety容器ID bash
openrety容器ID的获取,先在服务器终端输入查看正在运行的全部容器,
docker ps
如下所示:

在进入Openrety容器后,使用cd命令切换到下面的地址内:
/usr/local/openresty/nginx/conf/conf.d
在容器内,我们还需要安装nano,因为容器是一个轻量化运行环境,默认情况下往往只包含最基础的工具,甚至连常见的文本编辑器都没有。接下来我们需要上述的目录下写一些基于nginx运行的代码,所以就必须先安装nano,可以用下面的命令来安装:
apt update && apt install -y nano # 适用于 Debian/Ubuntu
yum install -y nano # 适用于 CentOS
安装完毕后,再次运行下面的命令来构建一个配置文件
nano example.com.conf # 这里的example.com 为演示地址,你需要将其替换为你的真实域名
在进入到配置文件后,输入下面的配置代码:
server {
listen 80;
listen 443 ssl http2;
server_name example.com;
index index.php index.html index.htm default.php default.htm default.html;
# 设置代理头
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
# 日志文件路径
#access_log /www/sites/mario.zhishi.email/log/access.log main;
#error_log /www/sites/mario.zhishi.email/log/error.log;
# Let's Encrypt ACME 挑战目录
location ^~ /.well-known/acme-challenge {
allow all;
root /usr/share/nginx/html;
}
# 主路由,将流量转发到 Docker 容器的 7777 端口
location / {
proxy_pass http://127.0.0.1:7777;
}
# 强制将 HTTP 重定向到 HTTPS
if ($scheme = http) {
return 301 https://$host$request_uri;
}
# SSL 证书路径
ssl_certificate /www/sites/mario.zhishi.email/ssl/fullchain.pem;
ssl_certificate_key /www/sites/mario.zhishi.email/ssl/privkey.pem;
# SSL 配置
ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:!aNULL:!eNULL:!EXPORT:!DSS:!DES:!RC4:!3DES:!MD5:!PSK:!KRB5:!SRP:!CAMELLIA:!SEED;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# 处理 HTTP 请求被错误地发送到 HTTPS 端口的情况
error_page 497 https://$host$request_uri;
# 设置 X-Forwarded-Proto 头
proxy_set_header X-Forwarded-Proto https;
# 启用 HSTS
add_header Strict-Transport-Security "max-age=31536000";
}
在配置文件内,尤其需要注意这里:
# SSL 证书路径
ssl_certificate /www/sites/mario.zhishi.email/ssl/fullchain.pem;
ssl_certificate_key /www/sites/mario.zhishi.email/ssl/privkey.pem;
这里的证书路径,就是刚才挂载到容器内的ssl证书地址。在确定无误后按下ctr+X键退出配置文件,并保存刚刚编辑的配置代码。
最后就是在退出容器前,使用命令
nginx -t
检查下配置文件是否有语法错误,如果没有,那么我们在容器内重新加载nginx服务器,也就是使用下面的命令
nginx -s reload
最终,我们成功在同一台服务器上运行多个应用,并为每个应用配置了不同的域名。同时,我们还为每个域名启用了 HTTPS 协议,以确保数据传输的安全性。
点击这里即可体验本期创建的超级玛丽奥游戏,

其他精彩内:微软的图片转三维Trellis项目