Discourse技术细节

Discourse技术细节

源站

目前该站点运行在一台线路优化过的香港云服务器上:

sudo -s
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
chmod 700 containers

Discourse对邮箱的依赖度挺高的,在这里我使用的是Resend提供的邮箱服务,再使用Cloudflare的邮箱路由对相应的邮箱进行转发。

由于该服务器我们希望部署其他服务,故我们使用Unix Socket将容器内的Nginx转发到宿主机内,详细教程可参考官网论坛教程:

Run other websites on the same machine as Discourse

反向代理

一般情况

为了保护原站,我们采用了其他线路优化的服务器进行反向代理:

  1. 在目标服务器上配置Nginx:
sudo apt-get update
sudo apt-get install nginx
  1. 创建站点配置文件:

创建一个新的Nginx配置文件,/etc/nginx/sites-available/discourse-proxy

sudo nano /etc/nginx/sites-available/discourse-proxy

文件中写入一下文件:(该文件已强制SSL,测试默认站点为proxy.aicnal.tech

server {
    listen 80;
    server_name proxy.aicnal.tech;

    # Redirect all HTTP requests to HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name proxy.aicnal.tech;

    location / {
        proxy_pass https://discourse.aicnal.tech;
        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;
    }

    # SSL configuration
    ssl_certificate /etc/letsencrypt/live/proxy.aicnal.tech/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/proxy.aicnal.tech/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
  1. 启用站点配置:

创建符号链接以启用站点:

sudo ln -s /etc/nginx/sites-available/discourse-proxy /etc/nginx/sites-enabled/
  1. 获取SSL证书:
sudo apt-get install  certbot python3-certbot-nginx

然后:

certbot --nginx

按照指引输入域名和邮箱,最后申请完成之后:

sudo systemctl restart nginx
  1. 访问反代后的网站:

比如说我反代后的网站就是:https://proxy.aicnal.tech

不过我建议你将httphttps都测试一下,看一看强制https有没有成功

遭到攻击

对于反代服务器,我们可能会尝试部署**雷池**来进行初步防护,但难免会出现被DDOS或者CC打穿的现象,这时我们准备开启防火墙,关闭80和443等其他端口。

为了维护站点的正常运行,我们会尝试使用Cloudflare Tunnel的方式维护站点的正常运行:

由于Cloudflare的业务变迁,之前的Argo Tunnel被迁移到了Zero Trust中,我们原本还是准备通过Unix嵌套字实现Tunnel,可能是Cloudflare自身的限制(?)

所以最后我们采用了HTTPS的方式创建隧道,使用云服务器厂商提供的云防火墙来进行防御

为了最佳的浏览效果,欢迎访问:小树 | Discourse的技术细节

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值