启用HTTPS访问
如果想要给平台添加 https
的访问方式, 可以按以下步骤操作:
1.准备证书
可以使用自签名的证书或向相关机构申请安全证书.
证书包含以下 2 个文件:
- <文件>.key
- <文件>.pem
使用自签名的证书时, 浏览器会有不安全访问的相关提示.
2. 修改平台配置
1. 上传证书
将 步骤1 中得到的文件上传到平台服务器上.
可以将证书文件放置在 /平台安装根目录/airiot/web/ssl
目录下
2. 修改配置
修改 web
服务的 nginx.conf
配置文件. 该文件的路径通常为 /平台安装根目录/airiot/web/nginx.conf
.
使用 vim
或其它编辑工具打开该文件, 按照以下步骤进行操作:
1. 将现有端口修改为https
如果要将现有端口修改为 https
的访问方式, 需要修改 nginx.conf
中的 80
端口对应的 Server
内容, 添加 ssl
相关配置.
注: 需要注意标有注释的内容.
server {
# 将端口号改为 443 并启用 ssl
listen 443 ssl;
# 访问域名,多个域名以空格分开
server_name localhost;
# 证书相关配置, 具体路径为实际挂载到容器中的路径
ssl_certificate /usr/local/nginx/cert/<文件名>.pem; # pem文件的路径
ssl_certificate_key /usr/local/nginx/cert/<文件名>.key; # key文件的路径
# ssl验证相关配置
ssl_session_timeout 5m; #缓存有效期
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议
ssl_prefer_server_ciphers on; #使用服务器端的首选算法
# 其余配置保持不变即可
}
2. 添加新端口为https
如果想同时允许 http
和 https
两种访问方式时, 需要额外添加一套平台配置. 步骤如下:
- 将
80
端口的Server
配置复制一份 - 按前面的 步骤 修改新复制的
Server
.
# 原有的配置
server {
listen 80;
server_name localhost;
keepalive_timeout 180;
client_header_timeout 180;
send_timeout 180;
client_body_timeout 180;
client_max_body_size 300000M;
proxy_connect_timeout 3600s;
proxy_send_timeout 3600s;
proxy_read_timeout 3600s;
client_header_buffer_size 512k;
large_client_header_buffers 4 512k;
charset utf-8;
# 其它内容
}
# 新复制并修改后的配置
server {
# 将端口号改为 443 并启用 ssl
listen 443 ssl;
# 访问域名,多个域名以空格分开
server_name localhost;
# 证书相关配置, 具体路径为实际挂载到容器中的路径
ssl_certificate /usr/local/nginx/cert/<文件名>.pem; # pem文件的路径
ssl_certificate_key /usr/local/nginx/cert/<文件名>.key; # key文件的路径
# ssl验证相关配置
ssl_session_timeout 5m; #缓存有效期
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议
ssl_prefer_server_ciphers on; #使用服务器端的首选算法
# 其余配置保持不变即可
}
3. 挂载证书文件并修改相关端口
修改 docker-compose.yml
文件, 作如下修改:
- 将证书挂载到
web
容器中. - 修改映射端口.
web:
container_name: web
image: nginx:alpine
logging:
driver: json-file
options:
max-file: "1"
max-size: 100m
networks:
- backend
- operation
ports:
# 原访问端口, http 协议
- 3030:80
# 新增端口, https 协议. 例如想修改外部访问端口为 8443 时, 可修改为 8443:443
- 443:443
restart: always
ulimits:
nofile:
hard: 3072
soft: 1024
nproc: 4096
volumes:
- /etc/localtime:/etc/localtime:ro
- /opt/app/airiot/web/html:/usr/share/nginx/html
# 添加该行内容, 将存放证书的目录挂载到容器中. 需要保证这里挂载到容器内的路径与前面 nginx.conf 文件中的证书路径保持一致.
# 格式为: 本地存放证书的目录:/usr/local/nginx/cert/
- /opt/app/airiot/web/ssl/:/usr/local/nginx/cert/
- /opt/app/airiot/web/nginx.conf:/etc/nginx/nginx.conf
- /opt/app/airiot/web/webCfg:/etc/nginx/webCfg
- /opt/app/airiot/web/portal:/usr/share/nginx/portal
4. 重启相关服务
进入到平台安装目录下(即 docker-compose.yml
文件所在目录), 执行以下命令重启相关服务, 重启成功后上述修改后效.
docker-compose up -d
5. 检查是否修改成功
执行完上述重启命令后, 使用以下命令确认 web
是否正常启动
docker ps -a | grep web
如果 web
的状态为停止状态, 表示配置有误, 可通过以下命令查看日志, 并根据日志内容作相关的调整.
docker logs web
如果 web
正常启动后, 即可通过 https
访问平台