Internet上的网络往往有内网,架构上大都是前端是防火墙+NAT,后端是内网的各个主机,因此要穿透防火墙进行传输需要对防火墙或NAT进行额外的配置。Internet上的两个Windows服务器之间传输数据,最长用就是FTP,其次还有HTTP等。Linux上还有SSH中的scp和NFS以及其他方法。古老的TFTP已经很少有人用了,或许思科的一些网络设备中还依然保留了TFTP,尽管现在思科的大多数设备也添加了对FTP的支持。
由于FTP工作在被动模式时不仅需要将21作为FTP的控制(命令)端口,还要将20作为FTP的数据端口,因此在配置防火墙时比较麻烦,不如用http协议传输文件。因此可以利用原有的网站结合Alias的方法加目录访问控制来实现。
例如:原有网站为http://www.lightcdn.cn,现在想在此网站下开启一个基于HTTP的ftp,如访问http://www.lightcdn.cn/ftpoverhttp/就能下载其中的文件,但又不影响原有网站的目录结构(如有的网站根目录是SVN的一个checkout点)。
# Linux上的Apache的写法:
<VirtualHost *:80>
ServerAdmin bbs@lightcdn.cn
DocumentRoot /www/html/mainweb
ServerName www.lightcdn.cn
ServerAlias ftp.lightcdn.cn
Alias /ftpoverhttp/www/html/ftpoverhttp
<Directory "/www/html/ftpoverhttp">
Options Indexes FollowSymLinks #注释有Indexes才能列出目录内容。
AllowOverride None
Order allow,deny #注释:否则会报403错误。
Allow from all
</Directory>
#ErrorLog logs/ftp.lightcdn.cn-error_log
#CustomLog logs/ftp.lightcdn.cn-access_log common #注释:如果访问量很大全完可以去掉日志。
</VirtualHost>
# Windows上的Apache的写法:
<VirtualHost *:80>
ServerAdmin bbs@lightcdn.cn
DocumentRoot C:/WWW/mainweb
ServerName www.lightcdn.cn
ServerAlias ftp.lightcdn.cn
Alias /ftpoverhttp C:/WWW/mainftp/ftpoverhttp
<Directory "C:/WWW/mainftp/ftpoverhttp">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#ErrorLog logs/ftp.lightcdn.cn-error_log
#CustomLog logs/ftp.lightcdn.cn-access_log common
</VirtualHost>
附:根据SELinux的设计:
标准的非HTTPS端口多采用为:80,8008,8009
标准的HTTPS端口多采用为:443,8443
end