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

FTP上传到服务器的代码如下(简单附加一下,具体的网上很多)
public static void 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;
const int BufferSize = 2048;
byte[] content=new byte[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;
index index.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
{
listen 8080; server_name your_server_ip; location /
{
root /; } access_log /usr/local/webserver/nginx/logs/nginx_access.log; }
}
改一下 you_server_ip即可。
Windows Server2012上使用Nginx做文件服务器的更多相关文章
- 在Linux和Windows系统上安装Nginx服务器的教程
在Linux和Windows系统上安装Nginx服务器的教程 1.在CentOS系统上安装Nginx 在 CentOS6 版本的 EPEL 源中,已经加入了 nginx 的 rpm 包,不过此 RP ...
- 安装SQL Server 2012过程中出现“启用windows功能NetFx3时出错”(错误原因、详细分析及解决方法)以及在Windows Server2012上安装.NET Framework 3.5的详细分析及安装过程
问题:在服务器(操作系统为Windows server 2012)上安装SQL Server 2012的过程中,安装停留在下图所示的界面上,显示”正在启用操作系统功能NetFx3”随后出 ...
- windows server2012 搭建.netcore+nginx+nssm运行环境
1.linux+.netcore+sqlserver的坑 linux不支持访问sqlserver2008及以下的版本(由于System.Data.SqlClient.dll的限制.windows上面访 ...
- windows平台下利用Nginx做负载均衡
1.下载nginx(http://nginx.org/en/download.html)安装包,解压,并使用cmd命令转到nginx.exe所在的目录 2.执行cmd命令start nginx启动ng ...
- ubuntu 上采用nginx做rtmp 直播 服务器
首先安装必要的依赖库 sudo apt-get install autoconf automake sudo apt-get install libpcre3 libpcre3-dev 安装 ...
- wsl 2 unbuntu 部署 asp.net core 使用 nginx 做反向代理,调试文件上传失败
继上一篇 asp.net core 3.1多种身份验证方案,cookie和jwt混合认证授权 的公司内部项目上线后发现文件上传功能有问题. 上传的文件超过50M以后前端就报错了,没有状态返回,也没有响 ...
- 在Linux上使用Nginx为Solr集群做负载均衡
在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxy ...
- 在windows上安装nginx
在windows上安装nginx 最近自己也尝试了一下在windows上安装nginx,其实非常的简单,这里算是备忘一下. 首先需要到nginx的官网上下载最新版的nginx:http://n ...
- 在windows上安装nginx并注册
在windows上安装nginx并注册 一.前言 最近自己也尝试了一下在windows上安装nginx,其实非常的简单,这里算是备忘一下. 二.在windows下面安装 首先需要到nginx的 ...
随机推荐
- aix 禁止root远程登录
Aix禁止root远程登录 aix用户扩展信息大都在/etc/security/user这个文本文件里.你可以修改: login=false 用户不能登录系统 rlogin=false 用户不能从远程 ...
- 基于AFNetworking 3.0的取消已发出的网络请求
一般情况下主动取消请求的需求不会太多 除非以下几种情况 1.比如电商应用为例 请求频繁,数据量大 2.对性能的要求比较高 3.网络环境比较差 当一个用户打开一个界面 看到的却是漫长的等待框 这时候用户 ...
- Linux中top和free命令详解(转)
top:命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最"敏感"的任务列表. 该命令可以按CPU使用.内存使用和执行时间对任务进行排序: 而且该命令的很多特性都可以通 ...
- (五)python的发展历史
1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器.Python这个名字,来自Guido所挚爱的电视剧Monty Python's Flying Circus.他希望这个新的叫做 ...
- Santa Claus and Tangerines
Santa Claus and Tangerines 题目链接:http://codeforces.com/contest/752/problem/E 二分 显然直接求答案并不是很容易,于是我们将其转 ...
- servlet笔记
开发servlet有三种方法: (1) 实现 Servlet接口 (2) 通过继承 GenericServlet (3) 通过继承 HttpServlet get提交和post提交的 ...
- 上传代码到GitHub时,遇到错误:fatal,The Requested URL return error 403
解决: from:pushing-to-git-returning-error-code-403-fatal-http-request-failed
- python爬虫框架scrapy初试(二点一)
功能:爬取某网站部分新闻列表和对应的详细内容. 列表页面http://www.zaobao.com/special/report/politic/fincrisis 实现代码: import scra ...
- Lua 中的string库(字符串函数库)总结
(字符串函数库)总结 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-11-20我要评论 这篇文章主要介绍了Lua中的string库(字符串函数库)总结,本文讲解了string库 ...
- Python网络编程学习_Day10
一.进程与线程 1.区别 进程:一个程序要运行时所需要的所有资源的集合,进程是资源的集合. 一个进程至少需要一个线程,这个线程称为主线程 一个进程里面可以有多个线程 两个进程之间的数据是完全独立,不能 ...