代理部署即前置一层第三方的WebServer
服务器处理所有的请求,将部分请求(往往是动态处理请求)有选择性地转交给后端的Golang应用程序执行,后端部署的Golang应用程序可以配置有多个。这种模式常用在复杂的WebServer
配置中,常见的场景例如:需要静态文件分离、需要配置多个域名及证书、需要自建负载均衡层,等等。
虽然Golang实现的WebServer
也能够处理静态文件,但是相比较于专业性的WebServer
如nginx
/apache
来说比较简单,性能也较弱。因此不推荐使用Golang WebServer
作为前端服务直接处理静态文件请求。
我们推荐使用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/public/my.png
访问静态文件。
一、Golang包设计Golang开发语言并没有完整实现OOP特性,因此我们只能采用包封装的方式来践行"高内聚,低耦合"的功能设计。...
Debug/Debugf是非常有用的几个方法,用于调试信息的记录,常用于开发/测试环境中,当应用上线之后可以方便地使用SetDebug...
常用方法的基准性能测试:https://github.com/gogf/gf/blob/master/errors/gerror/gerror_z_bench_test.go$ go test *.go -bench...
变量对象我们可以在模板中使用自定义的对象,并可在模板中访问对象的属性及调用其方法。示例:package mainimport ("context""gi...
以下常用方法列表,文档更新可能滞后于代码新特性,更多的方法及示例请参考代码文档:https://pkg.go.dev/github.com/gogf/gf/v2...