博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows Server2012上使用Nginx做文件服务器
阅读量:7093 次
发布时间:2019-06-28

本文共 2489 字,大约阅读时间需要 8 分钟。

hot3.png

由于项目中用到了大量的文件上传和删除,考虑到安全的因素,所以整体的思路是使用FTP从主服务器把文件资源上传到文件服务器上。

FTP上传到服务器的代码如下(简单附加一下,具体的网上很多)

publicstaticvoid UploadFile(FileInfo fileInfo, string hostname, string username,string password){string target;string targetDir = DateTime.Now.ToString("yyyy-MM-dd");//创建文件目录MakeDir(targetDir,hostname,username,password);target = Guid.NewGuid().ToString();string URL = "FTP://" + hostname + "/" + targetDir + "/" + target;FtpWebRequest ftp = GetRequest(URL, username, password);ftp.Method = WebRequestMethods.Ftp.UploadFile;ftp.UseBinary = true;ftp.UsePassive = true;ftp.ContentLength = fileInfo.Length;constint BufferSize = 2048;byte[] content=newbyte[BufferSize];int dataRead;using (FileStream fs=fileInfo.OpenRead()){try{using (Stream rs = ftp.GetRequestStream()){do{dataRead = fs.Read(content, 0, BufferSize);rs.Write(content, 0, dataRead);} while (!(dataRead < BufferSize));rs.Close();}}catch (Exception){throw;}finally{fs.Close();Console.WriteLine("上传成功");}ftp = GetRequest(URL, username, password);ftp.Method = System.Net.WebRequestMethods.Ftp.Rename; //改名ftp.RenameTo =target+ fileInfo.Name.Substring(fileInfo.Name.IndexOf('.'));try{ftp.GetResponse();}catch (Exception ex){ftp = GetRequest(URL, username, password);ftp.Method = System.Net.WebRequestMethods.Ftp.DeleteFile; //删除ftp.GetResponse();throw ex;}finally{//fileinfo.Delete();}// 可以记录一个日志  "上传" + fileinfo.FullName + "上传到" + "FTP://" + hostname + "/" + targetDir + "/" + fileinfo.Name + "成功." );ftp = null;}}

文件上传到服务器很简单,接下来要通过浏览器的地址显示文件(这里主要是做图片服务器),其实可以建一个网站,然后通过网站的虚拟目录来访问图片,但是个人感觉这肯定不是一种好的解决方案,于是想到了最近比较火的Nginx来做图片代理。

安装Nginx,我在安装的过程中遇到了一个小问题(Windows  找不到文件Nginx...),这个错误是因为位置没有定位正确,我使用的nginx-1.9.0版本,我只是定位到安装文件的上级目录,所以出现了这个错误,如果你出现了类似的错误,最简单粗暴的方式就是找到nginx安装程序,地址栏的地址直接粘出来就行。

另一个问题就是80端口被占用的情况,当我们配置完IIS后,默认端口被IIS的默认网站占用,这时候,你只需把IIS的默认网站端口修改一下即可。

安装成功后任务管理器中会有二个进程

接下来在地址栏中输入loaclhost,你就会发现会出现

Welcome to nginx!

Nginx安装成功后,修改nginx.conf文件。

location / {    root   html;indexindex.html index.htm;}location /Image{       #当访问Image 文件夹的时候指定映射到真正的物理地址alias J:\FTPFinCloud;#默认的图片index default.png;}#缓存图片location ~.*.(gif|jpg|jpeg|png|bmp|swf)${expires 10d;}

然后执行nginx-t,成功后接着执行nginx -s reload.这时候就可以访问图片了。

由于我使用的本地的所以我的地址为http://192.168.1.218/Image/2015-05-17/2015-05-17.jpg,

如果要发布到远程服务器上,需要绑定域名时怎么办。这时候只需在server内部配置一下即可

server{  listen8080;   server_name your_server_ip;   location /  {    root /;   } access_log /usr/local/webserver/nginx/logs/nginx_access.log; }}

改一下 you_server_ip即可。

转载于:https://my.oschina.net/u/2307114/blog/646793

你可能感兴趣的文章
haproxy url load balancing (url 负载均衡)
查看>>
Radix Tree in Linux Kernel
查看>>
PHP常见错误收集
查看>>
一对多的两个表,查询主表的信息和主表在子表中的记录条数
查看>>
从程序员入门到“第一个项目”的一些事
查看>>
转-Pentaho技术白皮书中文版(三)--构建新组件
查看>>
SpringSrcureCode在grails中实现用户--角色--权限的管理
查看>>
java Servlet 下载 itext 生成的2003 word 文档(java生成word文档3)
查看>>
Delphi 查找标题已知的窗口句柄,遍历窗口控件句柄(转)
查看>>
单例模式
查看>>
最锋利的jQuery源码、电子书及视频教程合集(共46个)
查看>>
JavaScript 内置对象!
查看>>
解决ubuntu下打不开rar文件
查看>>
内核启动过程
查看>>
在使用ibatis实现多条件模糊查询的语句
查看>>
童宁_下一代数据中心的安全挑战
查看>>
android 3g状态及信号监测
查看>>
开源 java CMS - FreeCMS2.8 站点管理
查看>>
JSP中include指令和include行为区别
查看>>
关于zend studio 9.0版本汉化
查看>>