用Windows IIS和阿里云NAS提供Web和FTP服务

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
阿里云盘企业版 CDE,企业版用户数5人 500GB空间
简介: 本文介绍如何结合阿里云NAS的SMB协议支持和ECS Windows虚拟机,使用Windows内置的互联网信息服务(IIS)来提供Web和FTP服务。


阿里云文件存储服务NAS(阿里云NAS)是阿里云在2016年正式推出的公有云上的网络文件系统实现。阿里云NAS主要面向阿里云 ECS 实例、HPC、Docker、弹性Web和BatchCompute 等计算节点提供文件存储服务。通过标准的文件访问协议,用户无需对现有应用做任何修改,即可在云上使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。阿里云于2016年发布了支持NFS网络文件系统访问协议的阿里云文件系统(NAS)。2017年3月,又增加了SMB文件系统访问协议的支持,正式对外公测。

 本文介绍如何结合阿里云NAS的SMB协议支持和ECS Windows虚拟机,使用Windows内置的互联网信息服务(IIS)来提供Web和FTP服务。

一、背景和基本信息

为了丰富文件系统的协议支持和满足客户的兼容性需求,阿里云NAS在今年3月提供SMB(Server Message Block)文件系统访问协议的支持,并开始公测。与NFS相比,SMB文件系统访问协议更加适合于Windows客户端,各个版本的Windows对SMB协议的支持更加完善,绝大多数Windows应用程序不经修改即可通过SMB协议访问阿里云文件存储服务。因此,阿里云建议应用集中运行在ECS Windows实例上的用户优先考虑使用SMB文件系统。阿里云是目前市场上唯一一个全面支持NFS和SMB协议的公有云厂商。阿里云NAS支持SMB 2.0及以上的SMB协议版本,对应支持Windows Vista / Windows Server 2008及以上的各Windows版本,不支持Windows XP / Windows Server 2003及以下的各Windows版本。做出这一选择的主要原因是SMB 1.0与SMB 2.0 及以后的版本相比,由于协议设计的巨大差异在性能和功能的上有严重的不足,同时只支持SMB1.0或更早协议版本的Windows产品都已经完全退出微软支持的生命周期。如果用户创建新Windows实例,我们推荐至少选择Windows 2008 R2以上的版本。

 Windows Server目前仍然是非常流行的网站建构平台。到2017年2月止,全球仍然有超过43%站点的Web Server采用微软IIS (来自Netcraft February 2017 Web Server Survey),很多网站和博客系统也是基于内容管理系统例如WordPress、Joomla等和IIS在Windows平台一起实现的。在阿里云现有的用户中,有不少用户选择用阿里云ECS提供的独享Windows虚拟机来提供网站服务。通过将网站内容资源集中存储在一个高可靠,高吞吐,按量付费的阿里云 SMB share上,IIS可以象访问本地文件系统一样访问阿里云NAS上的数据,从而让用户的网站可以实现存储和计算服务的分离,同时计算资源和存储资源都可以支持按需弹性扩容, 通过阿里云提供的负载均衡服务由多个虚拟机来共同承载一个弹性容错的网站架构。一个简单的示意图如下:

822f850f0e8bc4f4199e5ffe530feeb7410f242a

IIS提供的FTP服务也同样存在着非常广泛的需求:很多Web站点的管理员通过FTP来远程管理Web站点的内容;同时也有很多客户希望利用Windows虚拟机上的FTP服务在广域网和阿里云之间传输和共享文件。

二、基本设置

这里我们以IIS 7.5 (Windows Server 2008 R2)的设置为例,来展示如何通过阿里云NAS在阿里云上提供提供单节点的Web和FTP服务。其它Windows服务器版本如Windows Server 2008和Windows Server 2012的安装和部署也类似。对于Windows Server 2016,我们会指出一些需要注意的设置的不同之处。用户可以进一步使用阿里云负载均衡服务来建构多服务器节点的弹性容错的站点,具体方法请参阅阿里云负载均衡文档

 需要着重指出的是,在公网环境里提供Web 和FTP Service的阿里云ECS虚拟机由于服务的开放性容易受到安全攻击。我们在这里给出的设置步骤着重于说明如何在功能上连接Web服务与NAS存储,虽然有安全性的考虑但不能作为完整的安全配置和实现方案。用户需要承担安全方面的所有最终责任,从系统级别(如设置防火墙、ECS实例安全组和及时安装操作系统补丁)和服务级别(如使用阿里云的各个安全产品)来全面保障自己网站服务和数据的安全性。

 IIS安装

 以Windows Server 2008 R2为例,通过服务器管理器添加IIS角色并安装IIS的过程如下面几张图所示。在不同Windows操作系统上安装IIS的详细过程请参阅下面的微软在线文档:

 IIS 7的安装和部署

安装 IIS 和 ASP.NET 模块(Windows Server 2012 和2012 R2)

 1. 用户在服务器管理器中选择添加Web服务器(IIS)角色。

61dbaf8a92353141b1e6e42a90736c76f4b6ac10

       2. 用户选择为Web服务器安装的角色服务,处理基本的HTTP功能以外,我们还包括了FTP服务及扩展,ASP服务等,用于后面提供FTP over SSL服务和演示动态网页脚本的使用。

 

cc2205356e3418ca73e489fdffaaeaf7ecb2b9f0

         3. 用户选择安装,下面是安装完成的提示界面。 

 a55431fccbb36e877f1d9697c93734d5e026d711

 

NAS SMB文件系统的创建和设置

 用户的Web服务资源及配置文件可以集中存储在阿里云NAS的一个SMB share上。在创建了一个支持SMB的阿里云NAS文件系统之后,用户通过设置权限组来保证当前Web服务器可以读写访问SMB share对应的文件系统。用户可以使用VPC或者经典网络来连接NAS文件系统和Web服务器。创建和使用阿里云NAS SMB文件系统的具体步骤请参考阿里云博客《阿里云文件存储SMB协议服务及其申请和使用指南》

 在创建SMB 文件系统之后,用户可以在文件系统的缺省share “myshare”下面进一步创建目录如www来存储网站文件。我们在myshare\www下创建两个简单的文件并在后面以它们为例来说明整个操作流程:静态网页index.html和动态ASP脚本test.asp。前者显示“Hello World!”,后者动态获取并显示当前时间。


<HTML>

  <HEAD>

     <TITLE>Hello World in HTML</TITLE>

  </HEAD>

  <BODY>

     <CENTER><H1>Hello World!</H1></CENTER>

  </BODY>

</HTML>

 

Index.html



<HTML>

  <BODY>

     This page was last refreshed on <%= Now() %>.

  </BODY>

</HTML>

Test.asp


 如下图所示,当前的ECS虚拟机用户可以通过Windows文件管理器来验证对SMB share的访问。在我们的例子中,\\32f214a370-pcy74.cn-shanghai.nas.aliyuncs.com\myshare\www是网站资源的物理路径,其中\\32f214a370-pcy74.cn-shanghai.nas.aliyuncs.com\myshare是我们创建的阿里云NAS SMB share。

 

dc215614830c030d7f42d4edc6f4cd1a3df57a3e

 

出于安全和管理的考虑,我们在系统里还加入了一个新用户“iis_user”。在后面的例子中,在提供FTP服务或者在Windows Server2016上运行时,我们选择通过该用户而不是系统管理员来进行数据访问。

三、IIS Web服务的设置

如下图所示,Windows Server2008 R2的用户打开网站的“基本设置”,并在“编辑网站”的交互窗口中将“物理路径”设置为网站资源在阿里云NAS上的存储路径。继续前面的例子,我们输入UNC地址\\32f214a370-pcy74.cn-shanghai.nas.aliyuncs.com\myshare\www作为网站资源的物理路径。这一点需要格外注意:由于IIS缺省通过IIS的应用程序账号和用户组访问,Windows桌面用户在当前user session中映射的网络驱动器如(Z:\)是不可直接使用的,否则会出现访问失败的错误。

cea217bd5fdeeded780b09497ffaadfbb02735dd

 

通过用本地浏览器访问localhost或者127.0.0.1的index.html和test.asp,我们可以确认IIS现在已经可以正常进行Web服务了。服务器用户可以进一步设置阿里云安全组和Windows防火墙来进行Web访问安全的限制。

76e604d18ce9a6da6c370b3233e3d86b78386a03

 

69b3ddab3b5d8d1e4263ce6c9267318eeee36187

 

对于Windows Server 2016的用户来说,由于微软在该产品周期做的几个改动,目前需要通过以下的两个额外设置来让IIS和阿里云NAS的SMB服务正确协同工作。

1.  用户需要改动SMB client的一个注册表项来支持对SMB share的匿名访问。如下图所示,用户需要运行注册表编辑器regedit来修改下面的注册表值。

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters\AllowInsecureGuestAuth

 具体来说,在用户打开注册表编辑器之后,需要找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters, 然后用右键选取新建DWORD(32位)值。


如果通过命令行修改,命令如下:

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters /v AllowInsecureGuestAuth /t REG_DWORD /d 1


c2a254b069e3b2f6644f96287361ff141d799cc3

用户接着创建并编辑该值AllowInsecureGuestAuth并将其设置为1。

6a85e45acb5caa2f8172fe290df71ec9fe6bd054

 

  2.  除了注册表项外,用户还需要在IIS的网站设置中指定一个本地用户来访问网站在阿里云NAS上的资源。具体的步骤如下面两图所示,用户选取网站的基本设置,再通过“连接为”设置特定用户,这里我们选用前面设置的用户“iis_user”。

a50bee4a39c9c7a984503a84f0aa5b4b476191de

 

43367f4d20e63efa4c10c733305b25a52a66f48d

 

四、IIS FTP服务的设置

 很多IIS用户希望用FTP来共享文件或进行网站内容发布。在这里我们介绍如何通过IIS

设置FTP over SSL服务 又名FTP-SSL, S-FTP, FTP Secure)。

 安装SSL证书

             1.  用户 在IIS的服务器部分选择“服务器证书”,申请和管理服务器证书。

15c7a59e2e35e333d8499c547ed28ea14021ada2

2.   用户指定服务器证书的名称。

d8acbaf828c1b9aa1e9cca7a6a98d8f00ea1d26f

3.   配置和创建成功SSL证书。

ca092ed3d581dc3f4d0d3121127e94316968e364

 FTP站点设置

 1. 用户在IIS的网站部分选择“添加FTP站点”,和Web服务一样,物理路径需要使用UNC格式的SMB share路径。在这个例子里,我们仍使用前面用过的Web service的www目录。用户可以根据需要选取myshare上其它目录,也可以通过设置多个FTP站点利用不同的端口来提供对不同目录的访问。

5971239452aeb3f4a350255fbcc296b3c014d85e

2. 用户绑定提供FTP服务的IP地址,并分配端口号。这个例子里,我们出于安全的考虑没有使用标准的21端口而是用2222端口来提供FTP的控制信息通道。需要格外注意的是,我们选择需要SSL证书才能连接这个FTP站点,并指定使用前面创建的SSL证书。 

26f66a4b2fef7596534320c791b18ad24cffda23

3. 用户指定身份验证方式为“基本”,并且将读写权限提供给用户iis_user。如果需要的话,这里也可以选取更多的授权用户。

ca9cc66238dff93619efbe38578a65750fc60b7d

 4. 处于安全考虑,用户可以如下图所示,在通过在IIS中打开服务器级别“FTP防火墙支持”来限制FTP数据通道的端口范围,并选取“应用”。

 5cedde9f84e460058713f649964ab2da40bd4031

  在这之后,为了该端口范围立即生效,需要在服务器管理器中重启FTP服务。

f252127fcbe9f979ed05a91321b6daec46fe7dd6

5.    处于安全考虑,建议用户通过阿里云的安全组设置来限制FTP客户端的访问。在下面的例子里,我们将已经设置的FTP控制及数据端口范围只授权给一个客户端IP访问。需要的话用户也可以授权给多个IP或者一个多个网段。

740591032e63a4505ebcf1d38fe620963639ab02

6. 下面几张图展示了通过FTP客户端WinSCP利用FTP over SSL来访问我们的FTP站点的过程。

接受服务器证书,只在客户端第一次连接FTP站点才发生。

8927fb9817b0ba29bd278e8a260c3fa4a12a5a3f

  设置协议类型,端口号和登录信息。

4d032e51f08e1d873dd8d471be7899f21f16e34f

  登录后要求输入密码,即授权用户所在IIS服务器上的密码。

786535759bf1e66882d5ddff3be75323fc8c1a63

  数据连接建立,服务器读取和传输远程目录信息。

75106a87c40898fa8e3cac5d91c526523d819e4c

  用户完成初步连接,可以进行文件的上传下载。

d1cf828d24cb5251b6070045b78d8f4bd70162d7

五、总结

本文通过例子介绍了如何结合阿里云NAS的SMB协议支持和ECS Windows虚拟机,使用Windows内置的互联网信息服务(IIS)来提供Web和FTP服务。阿里云NAS服务还在不断发展和演进中,后续会提供更好的协议服务和性能支持。

 

相关实践学习
基于ECS和NAS搭建个人网盘
本场景主要介绍如何基于ECS和NAS快速搭建个人网盘。
阿里云文件存储 NAS 使用教程
阿里云文件存储(Network Attached Storage,简称NAS)是面向阿里云ECS实例、HPC和Docker的文件存储服务,提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。 产品详情:https://www.aliyun.com/product/nas
目录
相关文章
|
3月前
|
存储 开发框架 .NET
Windows IIS中asp的global.asa全局配置文件使用说明
Windows IIS中asp的global.asa全局配置文件使用说明
66 1
|
5月前
|
开发者 iOS开发 C#
Uno Platform 入门超详细指南:从零开始教你打造兼容 Web、Windows、iOS 和 Android 的跨平台应用,轻松掌握 XAML 与 C# 开发技巧,快速上手示例代码助你迈出第一步
【8月更文挑战第31天】Uno Platform 是一个基于 Microsoft .NET 的开源框架,支持使用 C# 和 XAML 构建跨平台应用,适用于 Web(WebAssembly)、Windows、Linux、macOS、iOS 和 Android。它允许开发者共享几乎全部的业务逻辑和 UI 代码,同时保持原生性能。选择 Uno Platform 可以统一开发体验,减少代码重复,降低开发成本。安装时需先配置好 Visual Studio 或 Visual Studio for Mac,并通过 NuGet 或官网下载工具包。
505 0
|
5月前
|
Shell PHP Windows
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
|
5月前
|
存储 安全 网络安全
【Azure 环境】使用Azure中的App Service部署Web应用,以Windows为主机系统是否可以启动防病毒,防恶意软件服务呢(Microsoft Antimalware)?
【Azure 环境】使用Azure中的App Service部署Web应用,以Windows为主机系统是否可以启动防病毒,防恶意软件服务呢(Microsoft Antimalware)?
|
5月前
|
负载均衡 网络协议 安全
【Azure 应用服务】Azure Web App的服务(基于Windows 操作系统部署)在被安全漏洞扫描时发现了TCP timestamps漏洞
【Azure 应用服务】Azure Web App的服务(基于Windows 操作系统部署)在被安全漏洞扫描时发现了TCP timestamps漏洞
|
5月前
|
JavaScript Java Python
【Azure 应用服务】在Azure App Service for Windows 中部署Java/NodeJS/Python项目时,web.config的配置模板内容
【Azure 应用服务】在Azure App Service for Windows 中部署Java/NodeJS/Python项目时,web.config的配置模板内容
|
5月前
|
开发框架 .NET API
Windows Server 2022 安装IIS 报错 访问临时文件夹 C:\WINDOWS\TEMP\3C 读取/写入权限 错误: 0x80070005
Windows Server 2022 安装IIS 报错 访问临时文件夹 C:\WINDOWS\TEMP\3C 读取/写入权限 错误: 0x80070005
199 0
|
7月前
|
网络协议
windows_server2012搭建iis并配置http重定向 iis转发
windows_server2012搭建iis并配置http重定向 iis转发
366 1
|
5月前
|
C++
【Azure云服务 Cloud Service】如何在部署云服务Cloud Service时候通过启动任务Start Task来配置IIS (如开启ARR)
【Azure云服务 Cloud Service】如何在部署云服务Cloud Service时候通过启动任务Start Task来配置IIS (如开启ARR)
|
5月前
|
开发框架 .NET 中间件
【Azure 云服务】在Cloud Service的代码中如何修改IIS Application Pool的配置呢? 比如IdleTimeout, startMode, Recycling.PeriodicRestart.Time等
【Azure 云服务】在Cloud Service的代码中如何修改IIS Application Pool的配置呢? 比如IdleTimeout, startMode, Recycling.PeriodicRestart.Time等
【Azure 云服务】在Cloud Service的代码中如何修改IIS Application Pool的配置呢? 比如IdleTimeout, startMode, Recycling.PeriodicRestart.Time等

相关产品

  • 文件存储 NAS