Nginx 反向代理配置用于图片回显

437 阅读3分钟

Nginx 反向代理配置用于图片回显

说明

  • 以前系统里存储图片全路径地址,安全性没有保障,为了安全的实现图片回显,Nginx 可以配置为反向代理服务器,将请求转发到后端服务器,并将响应返回给客户端。
  • nginx服务已经部署完成。地址:172.xx.xx.x:30000
  • minio服务已经部署完成。地址:172.xx.xx.x:30900

步骤

  1. 数据库存储图片相对路径

    例如:/info-collection/upload/20241017/d9bf55a60ab3033e600c7a34291b5b5c.png

    说明:拿到路径后不能直接访问到图片,隐私得到保障

  2. 打开nginx配置文件:/nginx/config/nginx.conf,配置反向代理,通过域名访问真实的图片地址。

    识别图片地址中有:info-collection/upload 关键词,则转发到:http://172.16.30.2:30900

    location /info-collection/upload/ {
           # 转发到minio地址
            proxy_pass http://172.xx.xx.x:30900;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
    }
    
  3. 前端获取到nginx的地址:172.xx.xx.x:30000 与数据库存储的图片相对路径,进行拼接。

    说明:如果后端进行配置、拼接,未来如果换了nginx服务器地址,还得再去更改配置。

  4. 拼接后的地址,可以直接访问:172.xx.xx.x:30000/info-collec…

存在问题

  1. 缓存机制影响性能:Nginx 在处理反向代理请求时,会将完整的客户端请求缓存到本地硬盘或内存中,然后再转发给上游服务器。这种机制虽然可以降低上游服务器的负载,但会增加请求的处理时间和内存使用,尤其是在处理大量请求时,可能会导致性能下降。

  2. 请求处理时间延长:Nginx 在转发请求之前需要先接收完整的客户端请求,并将其缓存起来。这意味着客户端的请求需要等待更长的时间才能得到响应,尤其是在网络延迟较高的情况下,用户体验会受到影响。

  3. 配置复杂度增加:Nginx 反向代理的配置相对复杂,需要仔细设置各种代理参数,如 proxy_pass、proxy_set_header 等,以确保请求能够正确转发和处理。配置错误可能导致请求无法正确路由或处理。

  4. 虽然反向代理可以提供一定的安全保护,但配置不当可能会导致安全漏洞。例如,未正确设置 change_origin 或 proxy_set_header 可能会导致敏感信息泄露。

  5. 兼容性问题:在某些情况下,Nginx 可能无法处理所有类型的请求,例如某些复杂的动态内容处理可能需要其他服务器(如 Apache、Tomcat)来辅助完成。这会增加系统的复杂性和维护难度。

优化建议

  1. 合理配置缓存策略:根据实际需求调整 Nginx 的缓存设置,避免不必要的缓存操作,以减少内存和磁盘的使用。

  2. 使用负载均衡:通过 Nginx 的负载均衡功能,将请求分散到多个服务器上处理,以减轻单台服务器的负载。

  3. 优化网络环境:确保 Nginx 与上游服务器之间的网络连接稳定且速度快,以减少请求的传输时间。

  4. 定期检查和更新配置:定期检查 Nginx 的配置文件,确保所有设置都是最优化的,并及时更新以应对新的安全威胁和性能问题。