1panel-seo-1200-630.jpg

证书管理

利用 1Panel 面板创建与管理证书(包括自动续签、自助申请)。

一、创建 Acme 账户

在面板中点击 网站 -> 证书,点击证书界面上方的 Acme 账户,邮箱填写自己的邮箱,账号类型默认 Let's Encrypt,密钥算法默认 EC 256。

二、创建 DNS 账户

在该页面同一位置点击 DNS 账户,根据自己的域名类型(在哪个平台购买的域名或者你的域名是使用谁的 DNS 作解析的)创建 DNS 账户。

这里以 Cloudflare 为例,EMAIL 选择与 Cloudflare 账户绑定的邮箱,API Token 填写 DNS 区域编辑的 API(需在 Cloudflare 控制台申请具有 Zone.DNS 编辑权限的API

三、申请证书

接下来就可以为自己的域名申请证书了,可以同时为多个域名申请同一个证书,在其他域名中填写即可,Acme 账户与DNS 账号选择刚才创建的。

勾选自动续签(当前证书都是 90 天,自动续签非常重要)

确认后将会自动申请证书,观察输出结果,多数异常通常都是网络连通错误或 DNS 验证失败导致的。

反向代理

一、安装 NGINX 服务器

使用 1Panel 管理反向代理需要依赖 NGINX,需要在应用商店中安装 OpenResty,需要注意的是,安装的版本应当选择旧的 1.21.***-focal 而不是 1.27.***-focal 。新的版本是 1Panel V2 才能用的,V1 版本的无论如何也是无法正常安装的;也不要妄想从旧版本升级到新版本(血的教训,全部网站配置丢失)

如果 80 或 443 端口被占用,可以设置成其他端口,灵活使用 Stream 功能。

二、创建反向代理网站

点击创建网站,选择反向代理,主域名为访问所代理服务的域名,选择监控 IPv6 以支持 IPv6 连接,代理地址正确填写局域网内服务所在地址和端口。

在所创建的网站中点击配置:

选择 HTTPS:启用 HTTPS,选择好刚才配置的证书,点击保存。这时候就可以使用 HTTPS 访问反代网站了,浏览器网址栏也不会出现'不安全'的警告字样。

其他配置

开启网站防护 WAF

1Panel 社区版也能够使用基础的 WAF 功能,点击高级功能中的 WAF,全局设置中开启即可,网站设置中可对个别网站单独设置。

启用 Stream 功能

由于多数运营商(ISP)阻止 80 及 443 端口,因此如果外网需要通过域名访问家里的服务,则需要通过其他端口进行访问,可利用Stream 将某一端口的流量转发到另外一个端口。

在网站界面中,点击上方的设置,选择配置修改,修改并加入以下代码(添加到 http 代码块之外且与 http 代码块并列):

stream {
    server {
        listen 5443;                  # 监听5443端口
        listen [::]:5443;             # 监听5443端口(IPv6)
        proxy_pass 127.0.0.1:443;   # 转发到本机 443
    }
    server {
        listen 5080;
        listen [::]:5080;
        proxy_pass 127.0.0.1:80;
    }
}

之后,路由开放 5080 和 5443 端口,从公网访问域名加端口就可以访问反代服务。

Uptime Kuma 的特殊配置

Uptime Kuma 监控界面需要特殊配置,点击 网站配置 -> 反向代理,在源文中添加以下代码:

    # 显式启用 WebSocket 支持
    proxy_set_header   Upgrade $http_upgrade;
    proxy_set_header   Connection "upgrade";

    # (可选)为了能在其他界面中显示监控界面
    add_header Content-Security-Policy "frame-ancestors 'self' <调用 Kuma 界面的原域名>";
    add_header X-Frame-Options "ALLOW-FROM <调用 Kuma 界面的原域名>";

上面的部分为启用 NGINX 的 WebSocket 支持,官方解释:https://github.com/louislam/uptime-kuma/wiki/Reverse-Proxy

下面的部分是为了能在博客上使用 <iframe> 标签嵌入监控界面,如本站的网站监控页。(原域名填写博客的域名)

Umami 的特殊配置

跟 Uptime Kuma 类似,如果不进行特殊处理,则在其他网页嵌入 Umami 的共享链接时会无法访问,因而在 Nginx 反代配置中添加以下代码:

add_header Content-Security-Policy 'frame-ancestors <调用 Umami 界面的原域名>';
proxy_hide_header 'Content-Security-Policy';

同时,这也解决了在 Halo 控制台界面中 Umami 插件无法显示的问题。