解决discourse部署到CentOS7的坑,nginx转发流量到另一个nginx的解决方案

Discourse 官方推荐使用docker部署项目, 好处是简单快捷, 坑的是docker镜像默认占用了80端口和443端口, 对于我这种一台机器部署多个网站的人,明显不够用,我需要将 Discourse 默认占用的80和443端口映射到宿主机的其它端口,比如80映射到宿主机的20080, 443映射到宿主机的 20443

通过改app.yml就可以解决

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;
        }
    }

}

你可能感兴趣的:(解决discourse部署到CentOS7的坑,nginx转发流量到另一个nginx的解决方案)