跳转到内容

HTTPS配置

使用程序内置HTTPS

如果想通过HTTPS访问程序,可以通过编辑配置文件 config/config.yamldocker-compose.yaml 实现

WARNING

如果使用了HTTPS,服务器就无法使用 NginxCaddy 等反代工具,因为这些工具会占用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: 0
yaml
  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配置不正确