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

    Nginx

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

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

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

    静态文件目录

    1. server {
    2. listen 80;
    3. server_name goframe.org;
    4. access_log /var/log/gf-app-access.log;
    5. error_log /var/log/gf-app-error.log;
    6. location ^~ /public {
    7. access_log off;
    8. expires 1d;
    9. root /var/www/gf-app;
    10. try_files $uri @backend;
    11. }
    12. location / {
    13. }
    14. location @backend {
    15. proxy_pass http://127.0.0.1:8199;
    16. proxy_redirect off;
    17. proxy_set_header Host $host;
    18. proxy_set_header X-Real-IP $remote_addr;
    19. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    20. }

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

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