自从上篇文章
使用AppNode面板10分钟完成搭建NodeBB论坛
序自从手头那台老奔腾虚拟化了之后,可以虚拟出很多很多的测试环境了,于是打算着手尝试安装最近比较火的NodeBB论坛...
之后有网友咨询我搭建成功之后默认只能使用IP+端口访问,那么如何绑定域名访问呢?答案当然是反向代理了。那么如何在 AppNode 面板中反向代理 NodeBB 呢?请看下文
NodeBB 官方文档一直是有关于反向代理设置方法的说明的,但都是针对 Web 服务器源文件的配置,并没有针对面板方面的配置方法,而且 NodeBB 属于开源程序,技术咨询和支持基本上都只存在于 NodeBB 国外的官方论坛里,英文只认识26个字母的我只能望而却步,其使用的Node.js、Redis、Socket.IO又和我们平时接触的PHP、MySql有很大的区别,所以造成了入门门槛较高的问题。
NodeBB 官方文档是直接给出了Nginx反向代理配置的源文件,如下:
server {
listen 80;
server_name forum.example.org;
location / {
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;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:4567;
proxy_redirect off;
# Socket.IO Support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
AppNode 面板也刚好开始了支持对 WebSocket
的反向代理,于是在面板里开始尝试反代 NodeBB。
当然使用 AppNode 面板直接配置反向代理是很简单的,毕竟 AppNode 面板已经做的很简单了,但是你会发现反代好的 NodeBB 并不能进入后台,只限于静态资源的访问,即使开启了 WebSocket
也会出现一些下面这样的错误:
检查 NodeBB 日志会发现有如下错误提示:
在绞尽脑汁也找不到解决办法的情况下只得求助于 AppNode官方交流群 的
虚竹@AppNode
并最终找出原因并解决了这个问题,在此衷心的感谢 AppNode 团队的工作人员和虚竹@AppNode
能在百忙之中抽出时间来解决每一位用户遇到的困难和问题。
此文将解决思路总结给各位网友,希望如果你也遇到以上类似问题可以对你有所帮助。
首先确保你搭建的 NodeBB 通过IP+端口能够访问、登录、发帖,如果不行请参照 "使用 AppNode 面板 10 分钟完成搭建 NodeBB 论坛" 重新搭建。
然后你需要在 AppNode 面板里的 网站管理
→运行环境管理
中 创建运行环境
,创建运行环境时的网站类型选择 反向代理
如下图:
运行环境创建完成之后就可以在网站管理中 创建网站
了,在创建网站第一步的第三项 反向代理
中填写你的NodeBB服务器IP和端口并勾选 支持对 WebSocket 的反向代理
,如下图:
创建并完成网站部署之后你应该可以访问到 NodeBB 论坛首页了,但是现在你并不能登录,NodeBB 会提示你 会话过期
。
这是由于 AppNode 面板的 网站管理 1.2.4版
缺少了 NodeBB 反代的几个关键参数,虚竹@AppNode
告诉我下一版将会更新这个问题。
在新版没有出来之后我们必须手动配置反向代理配置文件和NodeBB的配置文件:
修改反向代理配置文件
反向代理配置文件的位置如下:
/data/运行环境代号/sites/forum.example.org/conf/nginx.conf
添加最后五行使AppNode能够支持NodeBB反向代理,修改后配置文件如下:
location / {
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains';
proxy_pass http://你的NodeBB服务器IP:4567;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
# 以下手动添加使AppNode能够支持NodeBB反向代理
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_redirect off;
}
}
修改后网站会处于 等待部署
状态,这时候不要点击部署,因为自动部署后 AppNode 会删除我们手动添加的几行配置。
要使我们修改的配置生效可以去 网站管理
→组件管理
中手动重启 Nginx
。
修改NodeBB的配置文件
NodeBB的配置文件的位置如下:
/home/nodebb/config.json
在配置文件中添加 "cookieDomain": "forum.example.org",
修改后配置文件如下
{
"url": "https://forum.example.org",
"port": ["4567","4568","4569"],
"secret": "75cx9ffb-81d0-52se-160e-9ke9m577452s",
"database": "redis",
"cookieDomain": "forum.example.org",
"redis": {
"host": "127.0.0.1",
"port": "6379",
"password": "",
"database": "0"
}
}
保存并重启 NodeBB(cd /home/nodebb && ./nodebb restart
)使修改后的配置生效。
恭喜,全部修改到此结束,现在你已经可以使用域名来访问你的 NodeBB 论坛了。