Skip to content

域名与 HTTPS 配置 ​

这一篇是干什么的:给系统配一个带小锁的网址,让同事和企业微信都能安全访问。

浏览器用 HTTPS 打开系统,地址栏有一把小锁

先弄明白四个词 ​

词大白话解释
域名网址里那串字,下文统一写成「你的域名」
解析告诉互联网"这个域名指向哪台服务器"
HTTPS给访问加密的协议,浏览器地址栏会显示一把小锁
证书HTTPS 用的"身份证",用来证明这个网站是真的

前提 ​

  • 域名已经解析到你的服务器公网 IP。
  • 服务器上装了 Nginx。Nginx 就是"门卫":外面的访问先到它,它再转给里面的系统。(用 Caddy 也行,作用一样。)
  • 备案:服务器在中国大陆的,域名要先备案;服务器在香港等境外的,不用备案。

第一步:确认解析生效 ​

在你自己电脑的终端里:

bash
ping 你的域名

返回的是你服务器的 IP,就说明解析对了。

第二步:准备证书 ​

两种来源,选一种:

方式说明
免费Let's Encrypt,用 certbot 申请,每 90 天自动续期
付费从云服务商或证书商买一张,一年或两年有效

不管哪种,你会拿到两个文件:

  • 证书文件(常见名 fullchain.pem)
  • 私钥文件(常见名 privkey.pem)

私钥是钥匙,权限要锁好,不要发给任何人。

第三步:写 Nginx 配置 ​

系统自带了一份模板:deploy/nginx/host.example.conf。

把它复制到 Nginx 的配置目录,改三个地方:

  1. server_name 换成你的域名(文件里有两处)
  2. ssl_certificate 指向你的证书文件
  3. ssl_certificate_key 指向你的私钥文件

Nginx 配置模板:改域名和证书路径

模板长这样,每段在干什么都写在旁边:

nginx
server {
    listen 80;
    server_name 你的域名;
    return 301 https://$host$request_uri;   # 走 http 的访问,一律跳到 https
}

server {
    listen 443 ssl http2;
    server_name 你的域名;

    ssl_certificate     /etc/letsencrypt/live/你的域名/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/你的域名/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:18921;   # 转给本机 18921 端口上的系统
        proxy_http_version 1.1;
        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;
    }
}

大白话:外面的人访问 https://你的域名,Nginx 收下,转给本机 18921 端口上的系统。

系统自己永远不直接对公网开门。

第四步:让配置生效 ​

bash
nginx -t

显示 syntax is ok 和 test is successful 才能继续。然后让 Nginx 重新加载配置:

bash
systemctl reload nginx

reload 的意思是:让 Nginx 重新读一遍配置,不中断现有连接。

第五步:验证 ​

浏览器打开 https://你的域名/scrm/tools/,检查三件事:

  1. 地址栏有一把小锁 = HTTPS 成功
  2. 输入 http:// 开头的地址,会自动跳到 https://
  3. 能看到登录页 = 全链路通了

安全底线 ​

  • 公网只开放 443 端口。
  • 不要把 18921(系统)、3306(数据库)、6379(缓存)、8085(后端)开放到公网。
  • 在服务器防火墙和安全组里,这些端口只留内网访问。

别让系统"裸奔"

如果为了图省事,直接把 18921 端口开到公网:没有加密、没有门卫,登录密码和客户数据都是明文在互联网上跑。绝对不要这么做。

出错了怎么办 ​

现象什么意思怎么办
浏览器提示"证书无效"证书没配对,或者过期了检查证书路径;过期的去续期
502 Bad GatewayNginx 转过去了,系统没应答检查系统容器在不在运行,见日常巡检
一直转圈打不开网络或防火墙挡住了检查安全组有没有放行 443
nginx -t 报错配置文件写错了按报错提示的行号改,再测一遍

常见问题 ​

Q:能直接用服务器 IP 访问吗?

不行。企业微信要求 HTTPS 加域名,证书也是发给域名的,IP 用不了。

Q:默认的 /scrm 子路径能改吗?

能,但要在安装前改(见安装前准备)。装完之后再改,要同步改 Nginx 和企微回调地址,麻烦,不建议。

Q:证书到期了会怎样?

全站打不开,浏览器会报警告。Let's Encrypt 建议配自动续期;商业证书在到期前换新再 reload。

Q:能不能用免费的泛域名证书?

可以,只要覆盖你的域名就行。配法和单域名证书一样。

相关页面 ​

本说明书为企业 SCRM 私有化部署产品的配套文档