基于centos7.9搭建http文件服务器
1.安装httpd
[root@localhost ~]# yum install -y httpd
2.关闭防火墙以及selinux
[root@localhost ~]# systemctl stop firewalld && setenforce 0
3.修改相关配置
文件/etc/httpd/conf/httpd.conf中的默认参数(自定义修改)
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html" #这一行指定了文档根目录
<Directory "/var/www"> #用于针对指定目录(在这里是/var/www)设置访问控制规则的开始标签。以下的配置将应用于/var/www目录及其子目录。
AllowOverride None
# Allow open access:
Require all granted #表示允许所有人访问/var/www目录及其子目录,没有访问限制
</Directory>
Listen 80 #默认的监听端口,修改80后则需要指定IP:端口进行访问
注释/etc/httpd/conf.d/welcome.conf文件下的此内容,不然就会返回禁止访问报错
[root@localhost ~]# vim /etc/httpd/conf.d/welcome.conf
#<LocationMatch "^/+$">
# Options -Indexes
# ErrorDocument 403 /.noindex.html
#</LocationMatch>
4. 文件服务器下创建测试文件
[root@localhost ~]# echo hello > /var/www/html/test.txt
5. 启动httpd并设置开机自启
[root@localhost ~]# systemctl enable --now httpd
编辑http.conf文件,追加以下内容
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
<FilesMatch "\.(?i:pdf|zip|txt|csv)$">
Header set Content-Disposition "attachment"
</FilesMatch>
当有人请求以 .pdf、.zip、.txt 或 .csv 结尾的文件时,服务器会设置 Content-Disposition 标头,强制将文件作为附件下载,而不是在浏览器中直接打开,如果还要添加例如tar、gz等文件后缀可以下载,
则需要在括号内添加(?i:pdf|zip|txt|csv|gz|tar)相应的后缀
[root@localhost ~]# systemctl restart httpd
完善文件服务器的浏览器界面,在http.conf的Directory标签中添加
<Directory "/var/www">
AllowOverride None
# Allow open access:
Require all granted
Options +Indexes
IndexOptions Charset=UTF-8 NameWidth=*
</Directory>
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --reload
6. 密码认证
定义某ip段不用进行密码认证,其余用户则需要密码认证
-
编辑 Apache 的配置文件(通常位于
/etc/httpd/conf/httpd.conf
或/etc/apache2/apache2.conf
)。 -
在配置文件中找到包含你的文件服务器设置的部分,通常是一个
<Directory>
块,类似于:
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
- 在
<Directory>
块中添加Require
指令来限制访问。假设你想要允许192.168.1.0/24
IP 段内的用户无需密码认证,其他用户需要密码认证,可以这样配置:
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride None
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/httpd/conf/.htpasswd
Require valid-user
Require ip 192.168.1
</Directory>
AuthType Basic
:指定使用基本身份验证。AuthName
:指定身份验证领域的名称。AuthUserFile
:指定包含用户名和密码的文件的路径。Require valid-user
:要求所有用户都需要有效的用户名和密码进行认证。Require ip 192.168.1
:指定允许访问的 IP 地址段。
-
保存并关闭配置文件。
-
重新加载 Apache 服务器以使更改生效:
systemctl reload httpd
现在,只有位于 192.168.1.0/24
IP 段内的用户可以访问你的文件服务器而无需密码认证,其他用户则需要进行密码认证。请确保替换示例中的 IP 地址和目录路径为你实际使用的值。
在 Apache 的 Require ip
指令中,你应该写 192.168.1
,而不是 192.168.1.0/24
。
Require ip 192.168.1
这样会允许所有以 192.168.1
开头的 IP 地址,包括 192.168.1.0
到 192.168.1.255
之间的所有地址。 Apache 会将这个 IP 地址与用户的实际 IP 地址进行匹配,如果匹配成功,则允许用户无需密码认证。
要修改 Apache 的基本身份验证密码,你可以使用 htpasswd
命令。
首先,使用以下命令修改密码:
htpasswd -c /etc/httpd/conf/.htpasswd <username>
如果要修改现有用户的密码,只需运行相同的命令,并提供现有的用户名。例如,要修改名为 user1
的用户的密码:
htpasswd /etc/httpd/conf/.htpasswd <username>
然后输入新的密码并确认。
确保使用 htpasswd
命令时,提供正确的文件路径,以便它能够访问并修改密码文件。