美文网首页
Golang项目部署2,代理部署

Golang项目部署2,代理部署

作者: 80386 | 来源:发表于2019-04-24 22:54 被阅读0次

    文章来源:https://goframe.org/deployment/proxy

    代理部署

    代理部署即前置一层第三方的WebServer服务器处理所有的请求,将部分请求(往往是动态处理请求)有选择性地转交给后端的Golang应用程序执行,后端部署的Golang应用程序可以配置有多个。这种模式常用在复杂的WebServer配置中,常见的场景例如:需要静态文件分离、需要配置多个域名及证书、需要自建负载均衡层,等等。

    虽然Golang实现的WebServer也能够处理静态文件,但是相比较于专业性的WebServernginx/apache来说比较简单,性能也较弱。因此不推荐使用Golang WebServer作为前端服务直接处理静态文件请求。

    Nginx

    我们推荐使用Nginx作为反向代理的前端接入层,有两种配置方式实现动静态请求的拆分。

    静态文件后缀

    这种方式通过文件名后缀区分,将指定的静态文件转交给nginx处理,其他的请求转交给golang应用。
    配置示例如下:

    server {
        listen       80;
        server_name  goframe.org;
    
        access_log   /var/log/gf-app-access.log;
        error_log    /var/log/gf-app-error.log;
    
        location ~ .*\.(gif|jpg|jpeg|png|js|css|eot|ttf|woff|svg|otf)$ {
            access_log off;
            expires    1d;
            root       /var/www/gf-app/public;
            try_files  $uri @backend;
        }
    
        location / {
            try_files $uri @backend;
        }
    
        location @backend {
            proxy_pass                 http://127.0.0.1:8199;
            proxy_redirect             off;
            proxy_set_header           Host             $host;
            proxy_set_header           X-Real-IP        $remote_addr;
            proxy_set_header           X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }
    

    其中,8199为本地的golang应用WebServer监听端口。

    例如,在该配置下,我们可以通过http://goframe.org/my.png访问到指定的静态文件。

    静态文件目录

    这种方式通过文件目录区分,将指定目录的访问请求转交给nginx处理,其他的请求转交给golang应用。
    配置示例如下:

    server {
        listen       80;
        server_name  goframe.org;
    
        access_log   /var/log/gf-app-access.log;
        error_log    /var/log/gf-app-error.log;
    
        location ^~ /public {
            access_log off;
            expires    1d;
            root       /var/www/gf-app;
            try_files  $uri @backend;
        }
    
        location / {
            try_files $uri @backend;
        }
    
        location @backend {
            proxy_pass                 http://127.0.0.1:8199;
            proxy_redirect             off;
            proxy_set_header           Host             $host;
            proxy_set_header           X-Real-IP        $remote_addr;
            proxy_set_header           X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }
    

    其中,8199为本地的golang应用WebServer监听端口。

    例如,在该配置下,我们可以通过http://goframe.org/piblic/my.png访问静态文件。

    相关文章

      网友评论

          本文标题:Golang项目部署2,代理部署

          本文链接:https://www.haomeiwen.com/subject/vhhogqtx.html