当前位置:首页 > CN2资讯 > 正文内容

windows nginx 配置 图片服务器

2天前CN2资讯


前言

最近自己在搞一个商城系统,因为以前没接触过,所有东西都是自己一点一点摸索,遇到了很多问题,慢慢慢的也都解决了,这一次遇到问题的是,我需要将商品图片和详情页的图片上传到图片服务器保存,这样的话商城前端做负载均衡的时候就不会无法访问图片了。

我也是在网上找了很久,网上都是复制粘贴,连符号都不改的那种,看着真的很无语,没办法了,只有自己搞吧。

言归正传

我是在linux服务器上基于nginx做的,至于为什么不选择用Tomcat,大家可以去查一下,Tomcat是有访问限制的,所以最好还是用nginx。

准备

1.找一台linux服务器,或者自己安装一台,不会安装的可以借鉴一下我另一篇文章(安装linux教程.)

2.安装nginx;
3.给服务器绑定一个域名

配置nginx

打开nginx配置文件


我这个是linux 软件商店安装的

创建一个新的.conf文件

server { listen 80; server_name ; charset utf-8; location /images { expires 24h; root /home/;#指定图片存放路径 access_log /home/images/logs/images.log;#图片日志路径 proxy_store on; proxy_store_access user:rw group:rw all:rw; proxy_temp_path /home/;#代理临时路径 proxy_redirect off; proxy_set_header Host 127.0.0.1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 1280k; proxy_connect_timeout 900; proxy_send_timeout 900; proxy_read_timeout 900; proxy_buffer_size 40k; proxy_buffers 40 320k; proxy_busy_buffers_size 640k; proxy_temp_file_write_size 640k; } }

上面是我的配置文件

注意:

在保存配置文件之前,需要去指定位置先创建好文件夹以及文件,否则保存配置文件会报错。


在这里要注意一下,我配置的root 目录是/home/,location 是/images;

root 配置的意思是,会在root配置的目录后跟上URL,组成对应的文件路径。

意思就是我们在浏览器输入的这个地址实际访问的是

/home/images/

会把我们的location后面的 /images拼到实际访问的路径之后

所以,不要以为图片可以直接放在home目录下。

当然,如果你认为这样不方便查看或者担心出错,也可以修改一下root,将root改为alias

也就是 alias /home/images/


在浏览器中输入:http:///images/1.jpg 就可以访问图片了

总结

root响应的路径:配置的路径(root指向的路径)+完整访问路径(location的路径)+静态文件

alias响应的路径:配置路径+静态文件(去除location中配置的路径)

ftp的安装:

1.安装

因为我用的是宝塔面板,在软件商店里可以找到FTP空间。


安装之后在这里就可以打开了


2.配置账号地址



这里的根目录就填我们上面配置nginx的那个地址:/home/images/

系统对接通过FTP上传到服务器

1.引入jar

<!--FTP包--> <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.5</version> </dependency>

2.创建工具类
因为我是保存商品图片和详情页图片,这些图片都存在修改删除,所以我整理了两个方法,一个是上传,一个是删除

上传:

/** * Description: 向FTP服务器上传文件 * @param host FTP服务器hostname * @param port FTP服务器端口 * @param username FTP登录账号 * @param password FTP登录密码 * @param basePath FTP服务器基础目录 * @param filePath FTP服务器文件存放路径。例如分日期存放:/sku/。文件的路径为basePath+filePath * @param filename 上传到FTP服务器上的文件名 * @param input 输入流 * @return 成功返回true,否则返回false */ public static boolean uploadFile(String host, int port, String username, String password, String basePath,String filePath, String filename, InputStream input) { boolean result = false; FTPClient ftp = new FTPClient(); try { ftp.connect(host, port);// 连接FTP服务器 // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器 ftp.login(username, password);// 登录 int reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); System.out.println("FTP服务器连接失败"); return result; } //切换到上传目录 if (!ftp.changeWorkingDirectory(basePath+filePath)) { //如果目录不存在创建目录 String[] dirs = filePath.split("/"); String tempPath = basePath; for (String dir : dirs) { if (null == dir || "".equals(dir)) continue; tempPath += "/" + dir; if (!ftp.changeWorkingDirectory(tempPath)) { if (!ftp.makeDirectory(tempPath)) { return result; } else { ftp.changeWorkingDirectory(tempPath); } } } } //设置上传文件的类型为二进制类型 ftp.setFileType(FTP.BINARY_FILE_TYPE); //上传文件 if (!ftp.storeFile(filename, input)) { return result; } input.close(); ftp.logout(); result = true; } catch (IOException e) { e.printStackTrace(); } finally { if (ftp.isConnected()) { try { ftp.disconnect(); } catch (IOException ioe) { } } } return result; }

删除:

public static boolean deleteFile(String host, int port, String username, String password, String filePath, String filename){ boolean result = false; FTPClient ftp = new FTPClient(); try { ftp.connect(host, port);// 连接FTP服务器 // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器 ftp.login(username, password);// 登录 int reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); System.out.println("FTP服务器连接失败"); return result; } if (ftp != null) { ftp.changeWorkingDirectory(filePath); ftp.dele(filename); result = true; } ftp.logout(); result = true; } catch (IOException e) { e.printStackTrace(); System.out.println("---------删除FTP文件错误:"+e.getMessage()); } finally { if (ftp.isConnected()) { try { ftp.disconnect(); } catch (IOException ioe) { System.out.println("------关闭FTP连接错误:"+ioe.getMessage()); } } } return result; }

上传图片和删除图片的时候,路径都是相对的哦,比如你要删除/home/images/sku/1.jpg;因为我们FTP配置的根目录就是/home/images/,所以,filePath参数就是/sku/,不要搞错了。

3.合成图片地址

就是你保存进数据库的图片地址,任何地方都可以打开的。

这个地址其实是一个合成地址,由图片服务器绑定域名地址(/)加上nginx配置的访问地址(images/)再加上图片文件夹以及文件名称(sku/1.jpg),

大家有什么不明白的地方可以在评论区找我。



    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/30316.html

    分享给朋友:

    “windows nginx 配置 图片服务器” 的相关文章

    RackNerd_cn2:打造云端新体验,引领未来服务器托管

    在数字化转型的浪潮中,云服务器托管已经成为企业及个人用户不可或缺的一部分。无论是初创企业、开发者,还是大型企业,都需要一个稳定、高效、安全且易于管理的服务器托管解决方案。RackNerd_cn2作为一款备受瞩目的云服务器托管产品,凭借其独特的设计理念和技术创新,正在迅速占领市场,并成为用户们的新宠。...

    深入解析APT攻击及其主要案例分析

    在网络安全的领域,APT攻击近年来引起了广泛关注。这种高级持续性威胁(APT)通常是由高度专业化的攻击者发起,针对特定目标进行长期、隐蔽的攻击。APT攻击的目标通常是国家级别的机构、企业、科研单位等,它们的攻击方式不仅难以检测,而且往往具有明显的目的性。 回顾APT攻击的历史,我们可以发现其起源与发...

    详解VPS中转教程:提升网络连接的速度与稳定性

    我想给大家介绍一下VPS中转技术。这是一种通过一台或多台服务器进行流量转发的技术,能有效提升网络连接的效率和稳定性。说白了,它就像是在你的网络旅途中增加了一些中转站,让你的数据在传输时更加顺畅和可靠。 在我使用VPS中转技术的过程中,我发现它的应用场景相当广泛。比如,在网络受限的环境中,VPS中转能...

    远程VPS优选指南:高效管理虚拟专用服务器的最佳实践

    随着远程工作的普及和数字化转型的加速,远程VPS(虚拟专用服务器)逐渐成为许多企业和个人的首选工具。VPS通过虚拟化技术,让我们能够在一台物理服务器上同时运行多个独立的操作系统,这种灵活性使得用户能够像管理独立服务器那样,远程登录和管理自己的虚拟环境。每天都有更多的人意识到,拥有一个VPS可以为他们...

    如何安全地关闭防火墙和使用Linux命令管理防火墙

    在使用Linux系统时,关闭防火墙这件事我总觉得是个敏感话题。防火墙是保护计算机免受外部攻击的重要屏障,理解其作用很有必要。防火墙可以帮助我们监控和限制进入或离开系统的网络流量,让未授权的访问无处遁形。因此,在我们决定关闭防火墙之前,首先要明确什么样的场景和条件下,这个操作是合理的。 关闭防火墙之前...

    如何实现Windows链接服务器的应用与配置

    在现代工作和生活中,远程连接的重要性日益凸显。Windows链接服务器作为一种强大的工具,帮助用户在不同的设备之间实现无缝的远程访问。它的定义其实就是这样一款可以让用户通过网络访问和管理远程Windows服务器的技术。这意味着无论是在办公室还是在家中,只要有网络连接,我都能方便地使用和维护我的服务器...