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的 ...
随机推荐
- Newlife商业源码分享
[商业源码]生日大放送-Newlife商业源码分享 今天是农历六月二十三,是@大石头的生日,记得每年生日都会有很劲爆的重量级源码送出,今天Newlife群和论坛又一次疯狂了,吃水不忘挖井人,好的东西肯 ...
- Bitmap的读写
Bitmap的读写和几个小儿科的滤镜效果~ 闲来玩玩图像处理,拿破仑说过:“不想自己实现滤镜的美工不是好程序员~~#@!*^...#&!@......” 因为在学校做过很多美工的工作,而且从 ...
- 简单使用URLConnection、HttpURLConnection和HttpClient访问网络资源
URL的openConnection方法将返回一个URLConnection,该对象表示应用程序和URL之间的通信连接.程序可以通过它的实例向该URL发送请求,读取URL引用的资源. 下面通过一个简单 ...
- 转义字符(\)对JavaScript中JSON.parse的影响
Email:longsu2010 at yeah dot net 按照ECMA262第五版中的解释,JSON是一个提供了stringify和parse方法的内置对象,前者用于将js对象转化为符合jso ...
- 关闭Windows 2008下面应用程序出错后的提示
写了一个服务器端程序,没有能处理所有的错误,总有一些错误会抛出到系统中去.于是写了一个进程守护者,一旦发现服务器端退出,可以在第一时间重新启动服务器,也算是一种折中的方案吧.理论上讲应该是可行的,但是 ...
- java.sql.Types,数据库字段类型,java数据类型的对应关系
以下转自:http://kummy.itpub.net/post/17165/172850 本文在原文基础上有增减. 本概述是从<JDBCTM Database Access from Java ...
- 结构-行为-样式-angularJs笔记
0.关于Ng-app 通过ngApp指令来引导Angularjs应用是一种简洁的方式 ,适合大多数情况.在高级开发中,例如使用脚本装载应用,您也可以使用Bootstrap手动引导AngularJs ...
- D3.js:饼状图的制作
假设有如下数据需要可视化: var dataset = [ 30 , 10 , 43 , 55 , 13 ]; 这样的值是不能直接绘图的.例如绘制饼状图的一个部分,需要知道一段弧的起始角度和终止角度, ...
- Web.config 文件中的 system.webServer
Web.config 文件中的 system.webServer 节用于指定适用于 Web 应用程序的 IIS 7.0 设置.system.WebServer 是 configuration 节的子级 ...
- angular中的cookie读写
AngularJS中对cookie的操作封装了一个单独的模块,模块名为ngCookies,若想使用需在页面中先引入angular-cookies.js: <script src="js ...