开启HTTPS访问
开启HTTPS
通过https协议访问服务器,可以加密传输的信息,以免数据被第三方获取。
您可以采用以下2种方法来开启https:
- 1、使用Nginx反向代理
- 2、添加SSL证书并配置环境变量
一、使用Nginx反向代理 (推荐)
您可以直接安装Nginx来配置反向代理,也可以安装Nginx Proxy Manager
或者nginxWebUI
这类带ui配置界面的工具;
推荐使用Nginx Proxy Manager
、nginxWebUI
,因为它们集成了图形化配置、SSL证书申请、自动续签SSL证书等功能;
另外也可以开启Nginx的HTTP基本认证(HTTP Basic Authentication) 来对所有请求进行验证;
App和网页端均支持开启HTTP基本认证后的访问;
HTTP基本认证是一种用于保护Web应用程序的身份验证机制。
它通过在HTTP请求头中包含用户名和密码的方式来验证用户的身份。
当客户端发送请求时,服务器会返回一个HTTP 401状态码和一个WWW-Authenticate头,要求客户端提供有效的凭据。
客户端再次发送请求时,将凭据包含在Authorization头中。
服务器验证凭据的有效性,并根据结果返回相应的响应。
二、添加SSL证书并配置环境变量
-
在容器内的
/config/
目录下新建ssl
文件夹;假设容器/config的目录映射为: -v /volume1/docker/mt-photos:/config
那么在nas中,需要到 /volume1/docker/mt-photos 文件夹下创建
ssl
文件夹; -
到腾讯云或者其他云服务商上申请单域名的免费SSL证书(一般有效期为3个月);
-
等待SSL证书审核通过,然后下载 Nginx格式的证书;
-
将SSL证书放到
/config/ssl/
目录中; -
将证书的名称改为 域名.crt、域名.key,比如 xx.xxx.com.crt、xx.xxx.com.key;
- 如果没有.crt文件,请将 .pem文件重命名为 xx.xxx.com.crt
- 如果是letsEncrypt申请的证书,需要将 fullchain.pem 重命名为 xx.xxx.com.crt,privkey.pem重命名为 xx.xxx.com.key
-
添加容器的环境变量:SSL_NAME, 添加容器的端口映射:8163;
-
启动容器,日志会输出
[MT Photos] : Server started, http port:8063 https port:8163
-
配置路由器端口8163映射(如果需要的话)
-
使用https://xxx.com:8163 来访问
Windows端文件位置
windows服务端,需要在缓存文件夹下新建ssl文件夹,然后将证书文件放进去;
即
/config/ssl/
对应为缓存文件夹/ssl
安卓App 使用Https访问提示错误?
Trust anchor for certification path not found.
解决方法请看:安卓App HTTPS无法登录
SSL相关的环境变量:
SSL_NAME=xxx.com
MT_SERVER_SSL_PORT=8163
注意:SSL_NAME需要与/config/ssl/下的文件名称一致
命令举例:
docker run -d\
--name="mt-photos" \
-v /appdata/mt_photos/config:/config \
-v /appdata/mt_photos/upload:/upload \
-v /photos/folder1:/folder1 \
-v /photos/folder2:/folder2 \
-p 8063:8063 \
-p 8163:8163 \
-e TZ="Asia/Shanghai" \
-e SSL_NAME="xxx.com" \
-e MT_SERVER_SSL_PORT="8163" \
--restart="unless-stopped" \
mtphotos/mt-photos:latest