网站Logo Rednofsky的个人博客

如何通过Nginx反代你的halo

rednofsky
19
2025-12-19

前情提要:通过飞牛应用市场安装的halo,如果直接通过隐性URL解析的方式,可能会直接导致异常。因为飞牛下载的halo不允许直接隐性URL(错误提示:because it set 'X-Frame-Options' to 'sameorigin')

解决方案:通过Nginx反向代理。

本文介绍两种反向代理方式。

1.Nginx本机部署代理(Nginx-proxy-manager)

首先,建议你直接获取安装脚本。本站将相应安装脚本放置在alist.rednofsky.xyz中的Application文件夹中,文件名为docker-compose.yml

或者直接复制当前页面下代码:

services:
  nginxproxymanager:
    image: chishin/nginx-proxy-manager-zh
    container_name: npm
    restart: unless-stopped
    ports:
      - 9880:80
      - 9443:443
      - 81:81
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

其次,建议在docker目录下新建子目录为Nginx-proxy-manager。(你在其他目录新建也没问题,反正我自己跑的通就是了)

将下载好的文件放在你新建好的子目录中。

在飞牛nas的docker中,选择compose,新建一个项目。项目名称为Nginx-proxy-manager

在路径选择中,选择你刚才新建的子目录中。

此时飞牛会自动识别到你刚才所放在里面的文件,并会询问你是否需要直接使用刚才下载的YML文件,直接选择使用,并且勾选好创建好项目后立即启动。

之后docker就会自动构建并启动一个名为npm的容器(如果没有启动可以点击右边的电源按钮),如下图所示:

启动后,会在本地调用81端口。举个例子,我的nas所在的ip为10.0.0.183(内网),所以你打开的地址应该为10.0.0.183:81(注意是英文的:而不是中文的:)

其次,会弹出登录界面。账号为admin@example.com,密码为changeme

登录后会提示修改邮箱和密码等,记得修改。

我这里出现了问题,所以暂且不放图。

在代理管理中,添加一条新的代理。

在添加代理中,设置你的halo的本地端口(例如我的为28090),代理到你所申请的通过ICP备案核验的域名(例如本站为rednofsky.xyz),来源可以写你的本地IP(比如我的内网ip10.0.0.183:28090,或者是halo容器的IP【172开头的本机IP,或者是localhost】,如果都访问不了可以填写下外部IP查看,端口号选择你映射到外部的端口号)。

2.通过宝塔面板部署反代并授权SSL证书

宝塔面板官网:宝塔面板(bt.cn) 简单好用的Linux/Windows服务器运维管理面板

选择【立即免费安装宝塔面板】,在新页面中根据你对应的系统版本来获取。例如我的云服务器系统为Ubuntu,所以我选择Ubuntu/Deepin。

适用于Ubuntu的安装命令为:

wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh && sudo bash install_panel.sh ssl251104

在阿里云的实例中链接到你的服务器,并在终端输入安装命令,见下图:

中途如果出现提示输入y确定,请输入y

安装完成后,Terminal(终端)会显示安装成功,并且含有生成的一次性账号密码。

此时,要去你对应的服务商放行对应端口。一般教程会提示去安全组进行放行,但是我测试没有在安全组(针对轻量应用服务器)放行,而是在如下区域:

修改成功后,进入宝塔界面,选择网站,并添加一个站点。

添加好的站点如图所示:

随后点击右边的设置按钮,选择反向代理:

设置好后即可通过你的纯域名来访问你的halo。其他博客客户端应该同理,只是本地默认开放的端口不同。如果有遇到问题,欢迎在评论区讨论。