Discourse + 外部 NGINX + 自定义 SSL + 临时代理
停止现有容器
cd /var/discourse
./launcher stop app
修改 Discourse 容器配置
编辑 /var/discourse/containers/app.yml:
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
- "templates/web.socketed.template.yml" # 使用 Unix Socket
# ❌ 注释掉端口映射
# expose:
# - "3080:80"
# - "3443:443"
params:
db_default_text_search_config: "pg_catalog.english"
db_shared_buffers: "1024MB"
# 禁用容器内 SSL
DISCOURSE_ENABLE_SSL: false
DISCOURSE_ENABLE_LETSENCRYPT: false
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
重点:
注释掉
expose使用
web.socketed.template.yml禁用容器内 SSL
重建容器
./launcher rebuild app
此时容器会把 HTTP 服务绑定到 Unix Socket:
/var/discourse/shared/standalone/nginx.http.sock
安装宿主 NGINX
sudo apt update
sudo apt install nginx
配置 NGINX 反向代理
创建 /etc/nginx/sites-available/discourse:
server {
listen 3443 ssl;#自己要的端口
server_name 自己的域名;
ssl_certificate /var/discourse/shared/standalone/ssl/ssl.cer;
ssl_certificate_key /var/discourse/shared/standalone/ssl/ssl.key;
location / {
proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
}
启用站点:
sudo ln -s /etc/nginx/sites-available/discourse /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx