HTTPS配置
使用程序内置HTTPS
如果想通过HTTPS访问程序,可以通过编辑配置文件 config/config.yaml 和 docker-compose.yaml 实现
WARNING
如果使用了HTTPS,服务器就无法使用 Nginx、Caddy 等反代工具,因为这些工具会占用443端口,和程序内置的https端口冲突
yaml
server:
adminPath: /admin
address: :1024 # 项目http端口
httpsAddr: :443 # 项目https端口
httpsCertPath: keys/ssl.pem # ssl证书公钥地址
httpsKeyPath: keys/ssl.key # ssl证书私钥地址
logPath: logs
logStdout: false
database:
default:
link: mysql:root:fakeoai@tcp(mysql:3306)/share?loc=Local&parseTime=true
charset: utf8mb4
redis:
default:
address: redis:6379
pass: fakeoai
db: 0yaml
share:
image: fakeoai/share
# image: fakeoai/share-thirdparty # 第三方模式镜像
container_name: share
restart: always
environment:
TZ: Asia/Shanghai
ports:
- 1024:1024
- 443:443 # 打开docker内的https端口
volumes:
- ./config:/app/config
- ./keys:/app/keys
- ./logs:/app/logs
- ./public:/app/public
depends_on:
- redis
- mysql使用Nginx反代
如果不想使用程序内置的HTTPS,可以使用Nginx反代实现,如下是Nginx的配置示例
nginx
server {
listen 443 ssl;
server_name site1.example.com; # 你的网站域名
ssl_certificate /path/to/cert.pem; # ssl证书公钥地址
ssl_certificate_key /path/to/key.pem; # ssl证书私钥地址
location / {
proxy_pass http://localhost:1024; # share的地址
proxy_set_header Host $host; # 必须配置!!!
proxy_set_header X-Forwarded-Proto $scheme; # 必须配置!!!
}
}
# 多站点配置
server {
listen 443 ssl;
server_name site2.example.com; # 你的网站域名
ssl_certificate /path/to/cert.pem; # ssl证书公钥地址
ssl_certificate_key /path/to/key.pem; # ssl证书私钥地址
location / {
proxy_pass http://localhost:1024; # share的地址
proxy_set_header Host $host; # 必须配置!!!
proxy_set_header X-Forwarded-Proto $scheme; # 必须配置!!!
}
}使用Caddy反代
如果不想使用程序内置的HTTPS,可以使用Caddy反代实现,如下是Caddy的配置示例
nginx
site1.example.com {
tls /path/to/cert.pem /path/to/key.pem # ssl证书公钥和私钥地址
reverse_proxy http://localhost:1024 {
header_up Host {host} # 必须配置!!!
header_up X-Forwarded-Proto {scheme} # 必须配置!!!
}
}
# 多站点配置
site2.example.com {
tls /path/to/cert.pem /path/to/key.pem # ssl证书公钥和私钥地址
reverse_proxy http://localhost:1024 {
header_up Host {host} # 必须配置!!!
header_up X-Forwarded-Proto {scheme} # 必须配置!!!
}
}如何判断是否正确配置HTTPS
GET https://你的域名/ping
{
"origin": "https://你的域名"
}如果返回的origin是你的域名+https,则说明HTTPS配置正确,如果还是你的服务器IP或者协议为http,则说明HTTPS配置不正确