You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Genie.jl应用配置SSL证书以实现HTTPS部署

为Genie.jl应用配置SSL证书实现HTTPS连接

一、获取有效的SSL证书

推荐使用Let's Encrypt的免费证书,针对你的noip域名申请:

  1. 安装certbot(以Debian/Ubuntu为例):sudo apt install certbot
  2. 申请证书(确保服务器80端口未被占用,若已被占用可改用--webroot模式):
sudo certbot certonly --standalone -d your-noip-domain.ddns.net

申请成功后,证书文件会存放在/etc/letsencrypt/live/your-noip-domain.ddns.net/目录下,核心文件为:

  • fullchain.pem:完整证书链
  • privkey.pem:私钥文件

二、直接配置Genie.jl启用SSL

可以通过代码或配置文件直接让Genie处理HTTPS请求:

方式1:启动时动态配置

在Julia REPL或启动脚本中设置参数:

using Genie

# 允许外部访问
Genie.config.server_host = "0.0.0.0"
# 指定HTTPS端口(443为默认特权端口,需权限;也可用8443等非特权端口)
Genie.config.server_port = 443
# 启用SSL
Genie.config.ssl_enabled = true
# 指定证书和私钥路径
Genie.config.ssl_certificate_file = "/etc/letsencrypt/live/your-noip-domain.ddns.net/fullchain.pem"
Genie.config.ssl_private_key_file = "/etc/letsencrypt/live/your-noip-domain.ddns.net/privkey.pem"

# 启动服务
up()

注意:绑定443端口需要管理员权限,可通过sudo julia启动,或给Julia添加端口绑定权限:

sudo setcap 'cap_net_bind_service=+ep' $(which julia)

方式2:修改配置文件

编辑Genie项目的config/server.jl文件,修改对应配置项:

const server_host = "0.0.0.0"
const server_port = 443
const ssl_enabled = true
const ssl_certificate_file = "/etc/letsencrypt/live/your-noip-domain.ddns.net/fullchain.pem"
const ssl_private_key_file = "/etc/letsencrypt/live/your-noip-domain.ddns.net/privkey.pem"

保存后重启Genie服务即可。

三、使用Nginx反向代理(推荐)

通过Nginx处理SSL加密,Genie仅在本地运行,这种方式更稳定且便于扩展:

  1. 安装Nginx:sudo apt install nginx
  2. 创建Genie应用的Nginx配置文件(如/etc/nginx/sites-available/genie-app.conf):
# HTTP请求重定向到HTTPS
server {
    listen 80;
    server_name your-noip-domain.ddns.net;
    return 301 https://$host$request_uri;
}

# HTTPS服务配置
server {
    listen 443 ssl;
    server_name your-noip-domain.ddns.net;

    # 指定证书和私钥路径
    ssl_certificate /etc/letsencrypt/live/your-noip-domain.ddns.net/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-noip-domain.ddns.net/privkey.pem;

    # SSL优化配置(可选)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    # 转发请求到本地Genie服务
    location / {
        proxy_pass http://localhost:8000; # 对应Genie的运行端口,默认8000
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
  1. 启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-available/genie-app.conf /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置是否合法
sudo systemctl restart nginx
  1. 调整Genie配置,让其仅监听本地:
Genie.config.server_host = "127.0.0.1"
Genie.config.server_port = 8000
up()

四、后续注意事项

  • 证书续期:Let's Encrypt证书有效期为90天,设置自动续期:
    sudo certbot renew --dry-run # 测试续期流程
    
    可添加定时任务(如crontab)自动执行续期,续期后需重启Nginx或Genie服务。
  • 端口转发:确保路由器已转发443端口(HTTPS)和80端口(证书申请/HTTP跳转)到服务器。
  • 防火墙:开放对应端口的入站权限:
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    

内容的提问来源于stack exchange,提问作者SpatialFuel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 15:07:12