关注分享主机优惠活动
国内外VPS云服务器

教你使用Apache构建一个Http下载服务器

前言前段时间因为某种原因,几个主流的网盘都无法使用,而手头正好有一个闲置的云服务器,所以想建立一个文件下载服务,用户只需要通过一个链接就可以下载软件。

快速入门Apache。经过研究,我发现使用Apache2软件,Ubuntu可以快速满足我的需求。

安装Apache2

安装apt-get install apache2后,启动apache2服务:

/etc/init.d/apache2 start检查启动状态:

/etc/init.d/apache2状态然后,访问服务器的公共ip或域名,可以看到如下界面,说明apache工作正常:

教你使用Apache构建一个Http下载服务器-主机频道

最后,在/var/www/html路径中,删除index.html,上传想要下载的文件,再次访问即可下载。(注意:如果是云服务器,需要在安全组中打开端口号80和443。)同时也可以通过域名/文件名直接给别人一个链接下载。

教你使用Apache构建一个Http下载服务器-主机频道

如果有一个单独的服务器来共享临时文件,这将很快完成。让我们继续深入研究,考虑更现实的场景。

修改端口号Apache2默认端口号为80,所以可以直接通过公共ip或域名访问。现实中很多服务器本身部署了很多其他服务,端口号80经常被占用,所以需要将Apache2改为其他接入端口。

要修改端口,首先需要修改文件/etc/apache2/ports.conf:这里把80改成其他不冲突的端口号,我以1024为例。

# Listen 80Listen 1024 & ltIfModule ssl _ module & gt听443 & lt/if module & gt;& ltIfModule mod _ gnutls.c & gt听443 & lt/if module & gt;然后修改/etc/Apache 2/sites -available/000-default . conf。

# & ltvirtual host *:80 & gt;& ltvirtual host *:1024 & gt;servername directional设置服务器用来标识自身的请求方案、主机名和端口。这是在创建时使用的注意:在这个文件中也有一个DocumentRoot。修改此参数以调整文件系统的根路径。

修改后,重新启动apache2:

/etc/init.d/apache2重新启动此时,可以通过访问域名:1024来访问相同的内容。比如我的服务器访问url是http://xdxsb.top:1024。

设置访问限制个人服务器很容易被他人攻击。如果有人运行多线程重复请求下载,这将导致流量的巨大带宽消耗,甚至使服务器宕机。因此,长期提供下载服务的服务器必须设置访问限制。

配置文件参数的访问限制的详细说明主要涉及到配置文件/etc /etc/apache2/apache2.conf首先解读一下这个文件。本文件的内容如下:

#这是主要的Apache服务器配置文件。它包含# configuration指令,为服务器提供指令。#有关指令和/usr/share/doc/apache2/README的详细信息,请访问http://httpd.apache.org/docs/2.4/。Debian关于Debian的特定#提示。# # # Apache 2配置在Debian中如何工作的总结:# Debian中的Apache 2 web服务器配置与# upstream & # 39这是配置web服务器的建议方式。这是因为Debian & # 39s# default Apache2安装试图尽可能灵活地添加和删除模块、#虚拟主机和额外的配置指令,以便尽可能容易地自动化更改和管理服务器。#它被分成几个文件,形成下面概述的配置层次结构#所有文件都位于/etc/apache2/目录中:# #/etc/Apache 2/# | --Apache 2 . conf # | ` --ports . conf # | --MODS -enabled # | | --*。load# | `-- *。配置# | --conf -启用# | `-- *。配置# `--站点-已启用# `-- *。conf### * apache2.conf是主配置文件(此文件)。当启动# web服务器时,它通过包含所有剩余的配置文件将#放在一起。## * ports.conf始终包含在主配置文件中。它应该确定可以随时定制的传入连接的监听端口。# # * MODS -enabled/、conf-enabled/和sites-enabled/#目录中的配置文件分别包含管理模块、全局配置片段或虚拟主机配置的特定配置片段。##它们是通过将可用配置文件从它们的#各自* -可用/对应物进行符号链接来激活的。这些应该通过使用我们的# helpers a2enmod/a2dismod、a2ensite/a2dissite和a2enconf/a2disconf来管理。有关详细信息,请参见#它们各自的手册页。## *这个二进制文件叫做apache2。由于使用了环境变量,在#默认配置中,apache2需要用# /etc/init.d/apache2或apache2ctl启动/停止。直接调用/usr/bin/apache2不会#使用默认配置。# Global configuration # # # server root:服务器& # 39;保留s#配置、错误和日志文件。##注意!如果您打算将它放在NFS(或其他网络)挂载的文件系统上,那么请阅读互斥文档(可从# at & lt网址:http://httpd . Apache . org/docs/2.4/mod/core . html # mutex & gt;);#你会省去很多麻烦。##不要在目录路径的末尾添加斜杠。# # ServerRoot & quot/etc/apache2&quot##接受序列化锁定文件必须存储在本地磁盘上。##互斥文件:${APACHE_LOCK_DIR}默认# #存储shm和其他运行时文件的目录。# DefaultRuntimeDir $ { APACHE _ RUN _ DIR } # # PID file:服务器启动时应该记录其进程#标识号的文件。#这需要在/etc/APACHE 2/env vars # PID FILE $ { APACHE _ PID _ FILE } # # time out:接收和发送超时前的秒数。#Timeout 300## KeepAlive:是否允许持久连接(每个连接有#个以上的请求)。设置为& quot关闭& quot去激活。# KeepAlive On # # MaxKeepAliveRequests:持久连接期间允许的最大请求数#。设置为0以允许无限制的数量。#我们建议您将该数值设得较高,以获得最佳性能。# MaxKeepAliveRequests 100 # # KeepAliveTimeout:在同一连接上等待来自#同一客户端的下一个请求的秒数。#KeepAliveTimeout 5#这些需要在/etc/APACHE 2/envvarsUser $ { APACHE _ RUN _ USER } Group $ { APACHE _ RUN _ Group } # # hostname lookups:记录客户端的名称或仅记录它们的IP地址#例如,www.apache.org(开)或204.62.129.132(关)。#默认为关闭,因为它& # 39;如果人们不得不有意地打开这个特性,对网络来说总体上更好,因为启用它意味着每个客户端请求将导致至少一个对#名称服务器的查找请求。#HostnameLookups Off# ErrorLog:错误日志文件的位置。#如果没有在& lt虚拟主机& gt# container,与该虚拟主机相关的错误消息将#记录在此处。如果您*确实*为& lt虚拟主机& gt#容器,即主机& # 39;的错误将被记录在那里,而不是这里。# error LOG $ { APACHE _ LOG _ DIR }/error . LOG # # LOG level:控制记录到error_log中的消息的严重性。#可用值:trace8,...,trace1,debug,info,notice,warn,# error,crit,alert,emerg#还可以为特定模块配置日志级别,例如# & quot日志级别信息SSL:warn & quot;#LogLevel warn# Include模块配置:Include可选mods-enabled/*。loadIncludeOptional MODS -enabled/*。conf#包含要监听的端口列表Include ports.conf#设置Apache2 HTTPD服务器的默认安全模型。它不允许访问/usr/share和/var/www之外的根文件系统。#前者由Debian中打包的web应用程序使用,#后者可用于web服务器提供的本地目录。如果#您的系统提供来自/ srv中sub -目录的内容,您必须在此处或任何相关的虚拟主机中允许# access。& lt目录/>;符号链接后的选项allow override None Require all denied & lt;/Directory & gt;& lt目录/usr/share & gt;AllowOverride None需要所有授予的& lt/Directory & gt;& ltdirectory/var/www/& gt;选项索引后跟符号链接AllowOverride None要求all granted & lt/Directory & gt;# & ltDirectory /srv/># Options索引后跟symlinks # allow override None # Require all granted # & lt;/Directory & gt;# AccessFileName:要在每个目录中查找的文件的名称#用于附加配置指令。另请参见AllowOverride#指令。#AccessFileName。htaccess##以下代码行阻止。htaccess和。htpasswd文件被Web客户端#查看。# & lt文件匹配& quot^\.ht & quot& gt要求全部拒绝& lt/files match & gt;##以下指令定义了一些与# a CustomLog指令一起使用的格式昵称。##这些不同于常见的日志格式定义,因为它们使用%O#(发送的实际字节数,包括标头)而不是%b(请求的#文件的大小),因为后者使得无法检测部分#请求。##请注意,不建议使用%{X-Forwarded-For}i而不是%h。#请改用mod_remoteip。# LogFormat & quot% v:% p % h % l % u % t \ & quot;% r \ & quot% & gts % O \ & quot% { Referer } i \ & quot\ & quot% { user -Agent } I \ & quot;"vhost _ combinedLogFormat & quot% h % l % u % t \ & quot% r \ & quot% & gts % O \ & quot% { Referer } i \ & quot\ & quot% { user -Agent } I \ & quot;"combinedLogFormat & quot% h % l % u % t \ & quot% r \ & quot% & gts % O & quotcommonLogFormat & quot% { Referer } i-& gt;% U & quotrefererLogFormat & quot% { user -agent } I & quot;目录的代理# Include忽略编辑器& # 39;还有dpkg & # 39的备份文件,#请参阅自述文件。Debian了解详情。# Include语句的一般片段Include可选conf-enabled/*。conf# Include虚拟主机配置:Include可选站点-enabled/*。conf # vim:syntax = Apache ts = 4 SW = 4 STS = 4 Sr noet

参数解释:

PidFile:记录服务器启动进程号的文件。

超时:接收和发送前的秒数。

KeepAlive:是否允许稳固连接(每个连接有多个请求),设置为“Off & quot然后停用。

MaxKeepAliveRequests:在固定连接期间允许的最大请求数。设置为0表示无限制访问。

KeepAliveTimeout:在同一连接上从同一客户接收请求的秒数。

用户/组:运行的用户和组。

HostnameLookups:指定是否记录客户端的名称或IP地址。例如,当此指令打开时,记录主机名,如www.apache.org;关闭时,记录IP地址,204.62.129.132。缺省值为off,这比将其设置为on好得多,因为如果将其设置为on,每个客户机请求将导致至少一次对名称服务器的查询。

错误日志:错误日志文件位置

LogLevel:控制错误日志文件中记录的日志信息。可选值:调试、信息、通知、警告、错误、关键、警报、紧急

目录:您可以设置标签对中每个文件夹的属性。

选项:控制将在特定目录中使用哪些服务器功能。

全部:除多视图之外的所有功能,这是默认设置。ExecCG:允许用mod_cgi执行CGI脚本。FollowSymLinks:服务器允许这个目录中的符号连接,如果这个配置在配置节中,它将被忽略。包含:允许mod _ Includes提供的服务器端包含。No exec:允许服务器端包含,禁用< # exec cmd & quot和“# exec cgi & quot,但您仍然可以使用ScriptAlias目录中的“。#包含虚拟& quot虚拟CGI脚本索引:如果请求映射到目录的URL,并且该目录中没有DirectoryIndex(例如,index.html ),则服务器将返回由mod_autoindex生成的格式化目录列表Multiviews:它允许使用mod_negotiation“多视图”(MultiViews)进行内容协商symlinksifownermatch:服务器仅在与目标目录或文件的所有者具有相同uid时使用符号连接。如果此配置出现在配置部分,它将被忽略。AllowOverride:确定。htaccess文件语法:AllowOverride All | None | directive -Type

解压后运行Apache -jmeter -5.5/bin/jmeter . bat,就可以启动了。

为了创建一个线程组,我设置了1000个线程,并将时间设置为0.01秒。

教你使用Apache构建一个Http下载服务器-主机频道

然后设置HTTP请求,填写请求的域名、端口号和文件路径。

教你使用Apache构建一个Http下载服务器-主机频道

测试结果显示请求失败率为16%,所以基本上1000个并发请求在我的小服务器上很难满足。

教你使用Apache构建一个Http下载服务器-主机频道

封禁ip如果面对恶意攻击,最快解决问题的方法无疑是封禁其ip。在这里,尝试禁止原生ip,看看是否可行。

首先查询本地ip,直接在百度搜索ip,就可以找到公网ip。注意这必须是公有ip,内部ip是通过ipconfig找到的。

修改配置文件:

vim/etc/Apache 2/Apache 2 . conf modify/var/www/file内容:

& ltdirectory/var/www/& gt;选项索引跟随符号链接AllowOverride None & ltRequireAll & gt要求所有授权要求不IP 111.11.81.152 & lt;/require all & gt;& lt/Directory & gt;重新启动服务:

/etc/init.d/apache2重启再次访问,发现权限受限,说明设置成功。

教你使用Apache构建一个Http下载服务器-主机频道

扩展:如果只允许固定ip访问,可以修改如下:

& ltdirectory/var/www/& gt;选项索引如下符号链接allow override None # Require all granted Require IP 111 . 11 . 82 . 8 & lt;/Directory & gt;

设置帐户密码访问某些私有文件,您可以进一步配置帐户密码进行身份验证。

首先,创建一个文件夹来保存用户信息:

Mkdir -p /usr/local/conf,然后创建一个用户:

Htpasswd-c/usr/local/conf/。usrzstar zstar是我创建的用户名。

输入密码后,Apache会以密文形式存储密码。您可以通过以下方式查看用户名和密码密文:

Cat /usr/local/conf/。usr再次修改配置文件:

Vim /etc/apache2/apache2.conf修改内容:

& ltdirectory/var/www/& gt;选项索引后跟符号链接allow override All AuthName " Apache " AuthType Basic auth userfile "/usr/local/conf/。usr "要求用户zstar & lt/Directory & gt;重新启动服务:

/etc/init.d/apache2重启再次访问,成功弹出登录验证,表示配置成功。

教你使用Apache构建一个Http下载服务器-主机频道

参考[1]ubuntu搭建下载ubuntu文件的http服务器:https://blog . csdn . net/YY 1695990107/article/details/116976994[2]Apache 2 httpd . conf配置详情:https://blog.csdn.net/阿西尼西/article/details/78854139[3]Apache的访问控制:https://blog.csdn.net/m0 _ 54434140/article/details/122249712[4]三种模式和参数

这就是这篇关于教你用Apache构建Http下载服务器的文章。关于用Apache构建Http下载服务器的更多信息,请搜索主机频道zhujipindao以前的文章。或者继续浏览下面的相关文章。希望大家支持主机频道zhujipindao。以后多来com!

未经允许不得转载:主机频道 » 教你使用Apache构建一个Http下载服务器

评论 抢沙发

评论前必须登录!