02-apache2
最流行的web服务器端程序
- 北美印第安人的一个部落,/ 来自美军武装直升机
- Apache软件基金会的一个开源web服务器
- 曾经是 世界上使用排名第一的web服务器软件
- 模块化强大的扩展能力
- SSO模块 单点登录
- 并发限制模块
- 日志监控模块
- WAF模块 web应用防火墙
- 负载均衡模块
- 音乐 / 图像处理模块
Apache安装使用
1 | sudo apt install apache2 # 安装Apache软件包 |
这是默认的主页面
默认侦听在80端口
通过众多的directives(指令)进行配置,将directives分散于多个配置文件中
在Ubuntu server中把 apache 大的配置文件切分成多个小的配置文件,这样使用起来会条理清晰
配置文件都在/etc/apache
目录下,大致有以下文件:
1 | apache2.conf # 主配置文件,全局配置,是一个配置文件入口,通过 include包含其他配置文件 |
站点文件配置
1 | sudo vim /etc/apache2/sites-available/000-default.conf |
里面的配置并不多,以virtualhost
开头,以virtualhost
结尾
创建新的虚拟主机
1 | sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/mysite.conf |
实例:
- 创建两个站点, ali 和baidu 通过域名的区分,同样都侦听在80端口
- 然后在
/var/www/index
新建ali和baidu目录, 各自新建一个index.html
文件然后回到apache2目录下, 在site-enabled目录下软连接ali和baidu的配置,可以用sudo a2ensite ali
命令
- 然后根据提示重启服务
侦听端口
1 | /etc/apache2/ports.conf |
DirectoryIndex 索引页 更改mods-available/dir.conf
Option Indexes
按照上面的排列顺序,默认返回的是排在前面的页面
如果一个都没找到,会在浏览器页面上返回一个当前web服务器上的文件目录
但是文件目录显示出来是一件非常危险的事情 可以在apache主配置文件中隐藏
编辑/etc/apache2/apache2.conf
去掉下面画圈的地方:
改掉之后 重启服务, 再去访问, 会报权限拒绝的错误
ErrorDocument 报错提示 在/etc/apache2/conf-available/localized-error-pages.conf
如不想显示报错的提示, 可以修改localized-error-pages.conf
内容,自定义报错信息
基于目录的Options
1 | indexes # 列出文件目录信息, 索引 |
1 | sudo vi /etc/apache2/envvars |
模块化
- 服务器核心只实现了基本功能
- 其他功能通过模块实现
- Ubuntu编译动态加载模块实现运行时模块调用
1 | apt search libapache2-mod # 搜索模块 |
加密
传输过程的CIA C就是机密性, I 就是完整性 , A就是可用性.
C通过ssl实现了信息的加密, I就是通过hash计算,确保每个数据的hash摘要值 完整性, A可用性 身份验证
不提供应用层安全
在sites-available/default-ssl.conf
1 | sudo a2ensite default-ssl # 默认未启动 |
证书:
1 | openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr # CA机构签名证书 |
创建HTTPS虚拟主机
1 | sudo cp default-ssl.conf mysite-ssl.conf |
商业证书颁发机构
- 权威机构颁发 默认信任 增强特性 收费高昂 有效期长
Let’s encrypt
- 致力于加速全网实现HTTPS的免费证书颁发机构
- 证书有效期90天(可刷新)
1 | sudo add-apt-repository ppa:certbot/certbot # 添加库 |
申请证书流程
前提
- 域名正常解析 设置好虚拟主机
申请并获得证书
sudo certbot --apache -d example.com -d www.example.com
证书位置
/etc/letsencrypt/live
查看证书状态
https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest