Nginx 反向代理配置用于图片回显
说明
- 以前系统里存储图片全路径地址,安全性没有保障,为了安全的实现图片回显,Nginx 可以配置为反向代理服务器,将请求转发到后端服务器,并将响应返回给客户端。
- nginx服务已经部署完成。地址:172.xx.xx.x:30000
- minio服务已经部署完成。地址:172.xx.xx.x:30900
步骤
-
数据库存储图片相对路径
例如:/info-collection/upload/20241017/d9bf55a60ab3033e600c7a34291b5b5c.png
说明:拿到路径后不能直接访问到图片,隐私得到保障
-
打开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; } -
前端获取到nginx的地址:172.xx.xx.x:30000 与数据库存储的图片相对路径,进行拼接。
说明:如果后端进行配置、拼接,未来如果换了nginx服务器地址,还得再去更改配置。
-
拼接后的地址,可以直接访问:172.xx.xx.x:30000/info-collec…
存在问题
-
缓存机制影响性能:Nginx 在处理反向代理请求时,会将完整的客户端请求缓存到本地硬盘或内存中,然后再转发给上游服务器。这种机制虽然可以降低上游服务器的负载,但会增加请求的处理时间和内存使用,尤其是在处理大量请求时,可能会导致性能下降。
-
请求处理时间延长:Nginx 在转发请求之前需要先接收完整的客户端请求,并将其缓存起来。这意味着客户端的请求需要等待更长的时间才能得到响应,尤其是在网络延迟较高的情况下,用户体验会受到影响。
-
配置复杂度增加:Nginx 反向代理的配置相对复杂,需要仔细设置各种代理参数,如 proxy_pass、proxy_set_header 等,以确保请求能够正确转发和处理。配置错误可能导致请求无法正确路由或处理。
-
虽然反向代理可以提供一定的安全保护,但配置不当可能会导致安全漏洞。例如,未正确设置 change_origin 或 proxy_set_header 可能会导致敏感信息泄露。
-
兼容性问题:在某些情况下,Nginx 可能无法处理所有类型的请求,例如某些复杂的动态内容处理可能需要其他服务器(如 Apache、Tomcat)来辅助完成。这会增加系统的复杂性和维护难度。
优化建议
-
合理配置缓存策略:根据实际需求调整 Nginx 的缓存设置,避免不必要的缓存操作,以减少内存和磁盘的使用。
-
使用负载均衡:通过 Nginx 的负载均衡功能,将请求分散到多个服务器上处理,以减轻单台服务器的负载。
-
优化网络环境:确保 Nginx 与上游服务器之间的网络连接稳定且速度快,以减少请求的传输时间。
-
定期检查和更新配置:定期检查 Nginx 的配置文件,确保所有设置都是最优化的,并及时更新以应对新的安全威胁和性能问题。