SpringBoot访问服务器目录文件

389 阅读2分钟

为什么写

公司官网后台管理部分功能开发完后,开始部署测试环境。正式环境环境已部署,测试环境图片预览有些问题,考虑到正式环境应该是通过nginx做图片路径映射(这里不讨论是否合理),这里分享下自己遇到的问题及配置方式。

具体实现

通过nginx做代理:

  1. 代理官网前端项目(前端是nuxt项目)

    server {
        listen       8081;
        server_name  _;
        location / {
            alias /data/guanwang-web/static/;
            proxy_pass http://127.0.0.1:3000;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
        }
        location /static/ {
            alias /data/guanwang-web/static/;
        }
    }
    

    访问地址:http://192.168.168.98:8081/

  2. 代理后端服务器目录(主要是图片预览)

    1. springboot后台管理系统地址(权限,官网展示数据配置):http://192.168.168.98:8087/website-admin
    2. springboot接口地址(提供接口给前端):http://192.168.168.98:8089/website-api
    3. springboot项目端口是8087,http://192.168.168.98:8087/website-admin/upload 未做静态资源配置,显示404,配置nginx如下:
    server {
        listen       8087;
        server_name  _;
        location /website-admin/upload {
            alias /data/guanwang-admin/upload/;
        }
    }
    
    nginx -s reload
    
    1. nginx配置监听8087端口,查看/var/log/nginx中错误日志(springboot项目启动已占用8087端口):
    2022/07/18 13:43:10 [emerg] 52262#52262: bind() to 0.0.0.0:8087 failed (98: Address already in use)
    
    1. 因为8087端口java项目已被占用,可以监听8082端口,通过8082端口实现图片预览
    server {
        listen       8082;
        server_name  _;
        location /website-admin {
            proxy_pass http://127.0.0.1:8087/website-admin;
        }
        location /website-admin/upload {
            alias /data/guanwang-admin/upload/;
        }
    }
    

    通过以上配置可知:

    1. http://192.168.168.98:8082/website-admin代理到http://192.168.168.98:8087/website-admin,方便通过域名同时代理后台管理系统和图片预览
    2. 图片预览地址demo:http://192.168.168.98:8082/website-admin/upload/20220712163127065.jpg

参考

写完这一篇后找到了一些好的文章供参考,主要是SpringBoot的静态资源的配置和访问。
设置并访问静态资源目录
静态文件配置