Discourse技术细节
Discourse技术细节
小树Discourse技术细节
源站
目前该站点运行在一台线路优化过的香港云服务器上:
1 | sudo -s |
Discourse对邮箱的依赖度挺高的,在这里我使用的是Resend提供的邮箱服务,再使用Cloudflare的邮箱路由对相应的邮箱进行转发。
由于该服务器我们希望部署其他服务,故我们使用 Unix Socket
将容器内的Nginx转发到宿主机内,详细教程可参考官网论坛教程:
Run other websites on the same machine as Discourse
反向代理
一般情况
为了保护原站,我们采用了其他线路优化的服务器进行反向代理:
- 在目标服务器上配置Nginx:
1 | sudo apt-get update |
- 创建站点配置文件:
创建一个新的Nginx配置文件,/etc/nginx/sites-available/discourse-proxy
1 | sudo nano /etc/nginx/sites-available/discourse-proxy |
文件中写入一下文件:(该文件已强制SSL,测试默认站点为 proxy.aicnal.tech
)
1 | server { |
- 启用站点配置:
创建符号链接以启用站点:
1 | sudo ln -s /etc/nginx/sites-available/discourse-proxy /etc/nginx/sites-enabled/ |
- 获取SSL证书:
1 | sudo apt-get install certbot python3-certbot-nginx |
然后:
1 | certbot --nginx |
按照指引输入域名和邮箱,最后申请完成之后:
1 | sudo systemctl restart nginx |
- 访问反代后的网站:
比如说我反代后的网站就是:https://proxy.aicnal.tech
不过我建议你将 http
和 https
都测试一下,看一看强制 https
有没有成功
遭到攻击
对于反代服务器,我们可能会尝试部署**雷池**来进行初步防护,但难免会出现被DDOS或者CC打穿的现象,这时我们准备开启防火墙,关闭80和443等其他端口。
为了维护站点的正常运行,我们会尝试使用Cloudflare Tunnel的方式维护站点的正常运行:
由于Cloudflare的业务变迁,之前的Argo Tunnel被迁移到了Zero Trust中,我们原本还是准备通过 Unix
嵌套字实现Tunnel,可能是Cloudflare自身的限制(?)
所以最后我们采用了 HTTPS
的方式创建隧道,使用云服务器厂商提供的云防火墙来进行防御(因为开启本地 ufw
防火墙的话,https
的 443
端口也会被阻塞,从而无法使用