使用反向代理实现单服务器多站点部署

适用场景

当我们想在一个服务器上部署多个 go 站点时,每个go项目运行都需要独立的端口,但80端口只有一个,您可以通过 nginx 或者 apache 服务器的反向代理功能实现在一个服务器上部署多个 go 站点。还可以利用 nginx 反向代理实现负载均衡。

以 nginx 为例

Nginx(“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强。

官网 :  https://nginx.org/

下载、安装 nginx

下载地址  https://nginx.org/en/download.html

选择对应的 Nginx 版本下载并安装。

配置反向代理

模拟场景 :

go web server 项目运行端口 11022

nginx 反向代理配置 :

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        proxy_pass http://127.0.0.1:11022;
        root   html;
        index  index.html index.htm;
    }
    # ......
}

配置多个 server {} 对应不同的 server_name 及 http://127.0.0.1:不同端口,即可实现基于 nginx 的反向代理功能,从而实现在一个服务器上部署多个 go 站点。

nginx 启动命令

start nginx.exe // 启动 nginx
nginx.exe -s stop  //停止 nginx
nginx.exe -s reload //重新加载 nginx
nginx.exe -s quit  //退出 nginx

apache 服务器实现反向代理

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    DocumentRoot "/******"
    ServerName localhost
    ServerAlias localhost
    <IfModule mod_proxy.c>
        ProxyRequests Off
        SSLProxyEngine on
        ProxyPass / http://127.0.0.1:11022/
        ProxyPassReverse / http://127.0.0.1:11022/
    </IfModule>
    #PROXY-END
    #......
</VirtualHost>