文章目录
一、Apache的作用
- 在web被访问时通常使用 http://(超文本传输协议) 的方式
- http//超文本传输协议提供的软件:Apache、nginx、stgw、jfe、Tengine
二、Apache的安装
三、Apache的启用
- 开启服务并设定服务位开机启动:systemctl enable --now httpd
- 查看火墙信息:firewall-cmd --list-all
- 在火墙中永久开启http访问:firewall-cmd --permanent --add-service=http
- 在火墙中永久开启https访问:firewall-cmd --permanent --add-service=https
- 刷新火墙使设定生效:firewall-cmd --reload
四、Apache的基本信息
- 服务名称:httpd
- 配置文件:主配置文件:/etc/httpd/conf/httpd.conf;子配置文件:/etc/httpd/conf.d/*.conf
- 默认发布目录:/var/www/html
- 默认发布文件:index.html
- 默认端口:80(http);443(https)
- 用户:apache
- 日志:/etc/httpd/logs
五、Apache的基本配置
编辑主配置文件:/etc/httpd/conf/httpd.conf
1. Apache端口修改
(1)设定端口:在(不在)允许端口列表
(2)设定火墙允许端口:firewall-cmd --permanent --add-port=8080(6666)/tcp
(3)刷新火墙使设定生效:firewall-cmd --reload
当设定的端口不在允许端口列表时多两步操作:
(4)添加端口到允许列表:semanage port -a -t http_port_t -p tcp 6666
(5)重启服务:systemctl restart httpd
列出服务可以使用的端口列表:semanage port -l | grep http
1. 当更改端口为允许列表的端口时:
2. 当更改的端口不在允许列表时,会存在服务重启失败的问题:
可以更改seliux为警告模式:
或者使命命令添加端口到允许列表:semanage port -a -t http_port_t -p tcp 6666
2. 更改默认发布文件
(1)在主配置文件中找到参数DirectoryIndex,把指定文件添加到默认发布文件之前
(2)重启httpd服务即可访问
- 当给定默认发布文件内容后,文件存在,访问时就会看到默认发布文件内容
- 当我们再次设置一个发布文件(注意必须在默认发布目录下)时,访问时必须指定文件名称才能访问到
- 可以在主配置文件中更改默认发布文件:
3. 更改默认发布目录
(1)编辑主配置文件【etc/httpd/conf/httpd.conf】,修改默认目录并给定授权
(2)修改指定目录的安全上下文:semanage fcontext -a -t httpd_sys_content_t ‘/jia(/.*)?’
(3)刷新更改:restorecon -RvvF /jia/
(4)重启httpd服务:systemctl restart httpd
六、Apache的访问控制
设置素材:在默认发布目录下建立一个目录jia并在此目录下编写发布文件内容
不做任何设定的情况下,任何人都可以访问:
1. 基于客户端IP的访问控制
在主配置文件【etc/httpd/conf/httpd.conf】中设置
(1)IP白名单:
先读取Deny的内容,禁止所有人访问;后读取Allow的内容,允许IP192.168.1.136访问。
前面Deny和Allow重复的部分会被后读取的Allow内容覆盖,所以导致只有允许的IP可以访问,其他的IP都不可以访问。
(2)IP黑名单:
先读取Allow的内容,允许所有人访问;后读取Deny的内容,不允许IP192.168.1.136访问。
前面Allow和Deny重复的部分会被后面读取的Deny内容覆盖,所以导致只有设置的IP不可以访问,其他的IP都可以访问。
2. 基于用户认证
(1)生成认证文件:htpasswd -cm /etc/httpd/htpasswdfile admin
注意:当认证文件已经存在后,添加新的认证用户时,不需要加参数c,否则文件内容会被覆盖;
认证用户并不是系统的真实用户,类似与虚拟用户。
(2)编写主配置文件:有两种认证方式,允许所有用户通过认证和允许指定用户通过认证(二选一)
(3)编辑完成,重启服务生效
七、Apache的虚拟主机
虚拟主机允许从一个httpd服务器同时为多个网站提供服务。基于名称的虚拟主机其中多个主机名都指向同一个IP地址,但是Web服务器根据用于到达站点的主机名提供具有不同内容的不同网站。
- 设定客户端解析(浏览器所在的主机):vim /etc/hosts
- 建立发布目录及文件: mkdir -p /var/www/jia.com/{news,wenku};
vim /var/www/jia.com/news/index.html;vim /var/www/jia.com/wenku/index.html
- 编辑子配置文件: vim /etc/httpd/conf.d/Vhost.conf
编辑完成后重启服务httpd - 测试:在浏览器中输入网址可以访问到指定内容
八、Apache的语言支持
html默认支持
1. php
- 安装php软件:dnf install php -y
- 编辑php默认测试页:vim /var/www/html/index.php
- 访问php:firefox http://192.168.1.135/index.php
2. cgi
- 建立cgi默认发布目录:mkdir /var/www/html/cgidir
- 编辑cgi默认发布文件:vim /var/www/html/cgidir/index.cgi
- 更改权限,使其可以被访问:chmod +x /var/www/html/cgidir/index.cgi
- 编辑子配置文件:vim /etc/httpd/conf.d/Vhost.conf
- 重启服务:systemctl restart httpd
- 访问:firefox http://192.168.1.135/cgidir/index.cgi
九、Apache的加密访问
- 安装插件:dnf install mod_ssl -y
安装成功后会生成文件:/etc/httpd/conf.d/ssl.conf
- 生成密钥:openssl genrsa -out /etc/pki/tls/private/www.jia.com/key
- 生成证书签证文件: openssl req -new -key /etc/pki/tls/private/www.jia.com.key -out /etc/pki/tls/certs/www.jia.com.csr
- 生成证书: openssl x509 -req -days 365 -in /etc/pki/tls/certs/www.jia.com.csr -signkey /etc/pki/tls/private/www.jia.com.key -out /etc/pki/tls/certs/www.jia.com.csr
生成后,在配置文件【/etc/httpd/conf.d/ssl.conf】中修改相应文件,并重启服务【httpd】,就可以在浏览器中下载证书以后就看到内容
但是如果所有站点都采用加密的方式,虽然安全但是数据传输速率低,而且对于有的站点不需要采用加密,所以我们就可以 设置特定的站点加密即可:在子配置文件中添加相关设定。
例如再次设置一个虚拟主机login,规定访问login.com.jia需要加密:
设定完成后在浏览器中访问时,默认是使用80端口访问,并不是443加密端口访问,需要手动在网址上添加【https://】才可以加密访问。
这个问题可以使用网页重启功能解决:让默认访问80端口时自动跳转到443端口
编辑子配置文件【/etc/httpd/conf.d/Vhost.conf】:
编辑完成后重启服务就可以自动跳转加密访问:
所以总结来说:
在第四步生成证书后,在子配置文件中,使用网页重启功能设定需要加密的站点后,重启服务即可自动加密访问
- 编辑配置子文件:vim /etc/httpd/conf.d/Vhost.conf
- 重启服务: systemctl restart httpd