Discourse 官方推荐使用docker部署项目, 好处是简单快捷, 坑的是docker镜像默认占用了80端口和443端口, 对于我这种一台机器部署多个网站的人,明显不够用,我需要将 Discourse 默认占用的80和443端口映射到宿主机的其它端口,比如80映射到宿主机的20080, 443映射到宿主机的 20443
通过改app.yml就可以解决
但难搞的是, Discourse官方镜像自带了 nginx, 并写死了域名, 并自动配置好了ssl证书,并自动将80端口转发到443端口。
如果我们使用宿主机的nginx调度,就必须做一个纯转发的配置。
安装模块
yum update -y
yum install nginx-mod-stream -y
以CentOS7 为例,安装 nginx-mod-stream 完成后, 可以在
/usr/lib64/nginx/modules/ngx_stream_module.so
找到
最终的 /etc/nginx/nginx.conf 配置为
#user nobody;
worker_processes 1;
load_module /usr/lib64/nginx/modules/ngx_stream_module.so;
events {
worker_connections 1024;
}
stream {
map $ssl_preread_server_name $backend_name {
bbs.v2fy.com bbs;
default web;
}
upstream bbs {
server 127.0.0.1:20443;
}
upstream web {
server 127.0.0.1:443;
}
server {
listen 443 reuseport;
listen [::]:443 reuseport;
proxy_pass $backend_name;
ssl_preread on;
}
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}