DNS TCP 53端口用于区域传送
DNS UDP 53解析使用的
MIME可以将非文本信息编码为文本格式的数据--基于文本协议--发送导对方--还可以还原
基于文本方式传输
动态资源:不是文本内容而是程序文件
需要服务器运行一下生成的结果数据流发给客户端
Ngin就是复用的多进程IO结构 事件驱动 worker
工作模型: prefork,worrker
学习目标:
Apache基本配置
虚拟主机配置
HTTPS配置
集成动态内容
apache(web服务器)
apache是世界使用排名第一的Web服务器软件。他可以运行在几乎所有广泛使用的计算机平台,由于其跨平台和安全性被广泛使用,是最流行的web服务器端软件之一。它速,可靠并且可通过简单的API扩充,将Perl和Python等解释器编译到服务器中。
nginx 比阿帕奇好很多
prefork: 欲派生
apache:稳定,处理动态页面,同步阻塞,在客户端释放前不会释放内存。动态资源。
nginx: fork用户请求来直接处理,只能处理静态页面 ,异步非阻塞,交叉使用内存,擅长用于反向代理。
QQ 用的nginx <–curl -I www.qq.com
阿里的访问代理 Tengine
10086类似于反向代理 请求转接
翻墙 VPN 正向代理
lamp lnmp = linux apache(nginx) mysql php
apache 提供http/https协议访问
Ss 顶级进程 root 监控
ab 压力测试 适用apache 和nginx去对比速度
##安装apache############
实验环境:重置desktop
配置IP 重命名
##关闭selinux
#1.apache
#企业中常用的web服务,用来提供http:// (超文本传输协议)
2.Apache的安装部署
安装apache软件包
yum install -y httpd ##Apache软件
yum install -y httpd-manual ##apache手册
启动Apache服务:
systemctl start httpd
systemctl enable httpd
设置防火墙允许
firewall-cmd --permanent --add-service=http ##火墙允许http
firewall-cmd --reload ##在不改变状态的情况下重新加载
firewall-cmd --list-all
/var/www/html ##apache的根目录,默认发布目录
/var/www/html/index.html ##apache的默认发布文件
vim /var/www/html/index.html
<h1>hello westos</h1>
不需要重启,直接在网页刷新
##测试:
http://172.25.254.100
http://172.25.254.100/manual
实验环境:重置desktop
配置IP 重命名
安装apache软件包
yum install -y httpd ##Apache软件
配置文件路径
yum install -y httpd-manual ##apache手册
启动Apache服务:
systemctl start httpd
systemctl enable httpd
设置防火墙允许
firewall-cmd --permanent --add-service=http ##火墙允许http
firewall-cmd --reload ##在不改变状态的情况下重新加载
firewall-cmd --list-all
/var/www/html/index.html ##apache的默认发布文件
vim /var/www/html/index.html
<h1>hello westos</h1>
不需要重启,直接在网页刷新
##测试:
http://172.25.254.100 网页访问,可以访问到默认发布录的内容
UNABLE TO CONNECT 两种可能:防火墙,服务没开
如果访问其他文件,需要再ip之后添加文件名
如果不更改的话 默认的测试页面内容在
重启服务就会发现没有页面
http://172.25.254.100/manual
页面下就有这个文件
在/etc/httpd/conf/httpd.conf都可以更改该文件
高度模块化的
表示15秒 或者是100个请求就会断开
这里是课的
默认开启的,关闭
检测语法错误
telnet自己给自己发报文 发现报完了直接关闭了
一个是30秒 一个是100个资源 哪个先到达就断开了
test index
测试
响应完成并没有断开连接
httpd -M查看模块
只要是shareed就可以load module装载
配置mpm是如何工作的
这种模式两级 父进程生成子进程 一个子进程处理一个请求
进程启动创建多少个子进程
最少空闲进程数 ##一直有空闲的 这才是prefork的意义
最多空闲进程数
为生命周期内最多允许创建的子进程活跃状态的进程存在
最多允许创建的子进程数量
每个子进程最多允许创建多少个请求就必须强制退出
进程上下文切换也需要消耗 所以nginx不需要一直上下文切换进程 因此nginx受欢迎
三级: 父进程创建子进程–>子进程创建线程—>每个线程处理一个请求
启动的进程
最多允许的在线的线程数量
最少空闲线程数
最多空闲线程数
每个子进程生成多少个线程
多个线程无限制处理多少个请求
所以很尴尬了。刚开始启动四个进程,产生100个线程,但是最大空闲进程75个 所以干掉一个进程 变成三个
配置很迷惑
vim
刚开始就被杀掉了一个进程
使用httpd都是Prefork 所以没人管
centos7
2.4版本更换mpm
注释prefork 开启event
重启服务
改回去
http一般只是用prefork
http -M 只要是类型为shared的都是i可以使用load_module来装载的
如果不想要了 编辑对应模块的配置文件 即可
刚才的哪个scgi模块就没有了
即动态可装载模块
注释掉 重启服务 添加回模块
相对路径的http的根
所有的模块
需要的直接loadmodule即可
第三方模块 额外编译 自己编译进这个目录
后续需要http的模块也编辑进这个目录即可
##3:apache的基础信息
apache ##程序开启默认用户, 处理用户请求的进程
/etc/httpd/logs/* ##apache日志
/etc/httpd/conf ##主配置文件
/etc/httpd/conf/httpd.conf ##主配置文件
/etc/httpd/conf.d/ ##子配置目录
/etc/httpd/conf.d/*.conf ##子配置文件
/var/www/html ##apache的根目录,默认发布目录
/var/www/html/index.html ##apache的根目录,默认发布文件
默认端口:80
http_sys_content_t ##默认安全上下文
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190812224352121.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FzdWZlaXlh,size_16,color_FFFFFF,t_70)
修改默认端口:
vim /etc/httpd/conf/httpd.conf
43行 Linsten 8080 ##修改默认端口为8080
firewall-cmd --premanent --add-port=8080/tcp ##修改后火墙修改接口配置
firewall-cmd --reload
访问http需要加8080
修改默认发布文件:
默认发布文件就是访问apache时没有指定文件名时默认访问的文件
这个文件可以指定多个,有访问顺序
vim /etc/httpd/conf/httpd.conf
164 DirectoryIndex westos index.html ##当westos存在时先访问westos,不存在时 直接访问index.html
判断如果这个模块存在 那么就执行这里面的指令
修改默认发布目录:
vim /etc/httpd/conf/httpd.conf
120 DocumentRoot "/westos/html"
121 <Directory "/westos">
122 Require all granted
123</Directory>
vim /etc/httpd/conf/httpd.conf
120 DocumentRoot “/westos/html”
121 <Directory “/westos”>
122 Require all granted
123
注意:
当selinux=disabled,重启httpd服务之后可以看到默认发布文件‘
当selinux=enforcing,可以修改安全上下文看默认发布文件
semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?'
restorecon -RvvF /westos/
访问日志acces log
错误日志error log
日志截断 日志压缩
QQ聊天记录会在腾讯存储很长时间
###访问控制#####
测试是否还原成功
vim /var/www/html/index.html
<h1>172.25.254.111</h1>
mkdir /var/www/html/westos -p
vim /var/www/html/westos/index.html
<h1>test page</h1>
vim /etc/httpd/conf/httpd.conf
120 <Directory "/var/www/html/westos">
121 Order Allow,Deny ###顺序,先读allow,再deny
122 Allow from All
123 Deny from 172.25.254.11 ##读到deny会覆盖allow
124 </Directory>
systemctl restart httpd
测试:在172.25.254.11主机访问
http://172.25.254.111/westos访问失败
在其他主机可以访问
vim /var/www/html/index.html
172.25.254.111
mkdir /var/www/html/westos -p
vim /var/www/html/westos/index.html
test page
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f01b511e96fd66232b6b196401edc743.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/27c3652bb68225a486f529a842be3ebd.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f0bee2fae069a0c78ea85111615a8431.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d2b17e175c643202905f27790192542c.png)
vim /etc/httpd/conf/httpd.conf
120 <Directory "/var/www/html/westos">
121 Order Allow,Deny ###顺序,先读allow,再deny
122 Allow from All
123 Deny from 172.25.254.11 ##读到deny会覆盖allow
124 </Directory> ##只禁止11主机
systemctl restart httpd
把范围小的写前面
也可以这种方式写
测试:在172.25.254.11主机访问
http://172.25.254.111/westos访问失败
在其他主机可以访问
只允许11主机
option访问主站 默认会列出所有主页
indexes 一旦存在主页 别人就可以看到所有的文件
可定义改目录下的文件以哪些选项展示
ALL 启动所有选项
indexec 允许索引
新建立文件 放多个文件
没有主页 显示所有的!!很危险
不稳妥 如果上级目录 允许了还是可以
访问就没权限了
所以一般可以加载一个默认资源 就是index.html
只有给出全部类路径才可以
源文件不再网页范围呢
是否允许客户端访问
默认是允许的
别名路径
现在希望访问/image下目录都访问的是别的路径
访问images就自动访问这个新路径 不去刚才哪个路径下了
注释刚才哪个alias恢复
指定用户访问,且需要认证
自动提供了认证的文件
#生成认证文件
htpasswd -cm westosuser admin ##第一次生成文件是加-c参数
cat westosuser
htpasswd -m westosuser admin1
##修改默认访问文件
vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/westos">
AuthUserFile /etc/httpd/conf/westosuser ##读取认证文件
AuthType basic ##基本的认证方式
AuthName "Please input your name and password" ##访问页面
Require user admin 只允许admin用户访问,
#Require valid-user ##不加用户名,表示认证文件里的所有用户都可以访问
</Directory>
systemctl restart httpd
测试:172.25.254.111/westos
显示出输入用户和密码
#生成认证文件
htpasswd -cm westosuser admin ##第一次生成文件是加-c参数
cat westosuser
-m也可以指定别的目录下的文件
htpasswd -m westosuser admin1
##修改默认访问文件
vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/westos">
AuthUserFile /etc/httpd/conf/westosuser ##读取认证文件
AuthType basic ##基本的认证方式
AuthName "Please input your name and password" ##访问页面
Require user admin 只允许admin用户访问,
systemctl restart httpd
测试:172.25.254.111/westos
显示出输入用户和密码
认证成功之后有钥匙图标
#Require valid-user ##不加用户名,表示认证文件里的所有用户都可以访问
</Directory>
可以查看 后续自动保存了 就不需要每次都输入密码了
归类一个组就可以了
定义一个组 组名字为tom 包括两个用户
animales: admin admin1
继续添加组文件 和组的名字即可
测试成功
虚拟主机
另外一个
也可以基于端口
地址一样 端口不一样
另外一个
删除地址
重启服务
基于主机名
重新启动
根据ip默认是第一个被加载的文件
添加域名 /etc/hosts
下面这个是我自己做的:
虚拟主机允许您从一个httpd服务器同时为多个网站提供服务。在本节中,我们将了解基于名称的虚拟主机,其中多个主机名都指向同一个IP地址,但是Web服务器提供用于到达站点的主机名提供具有不同内容的不同网站。
需要实现的就是使用不同的域名去访问的时候,到达站点的主机名提供具有不同内容的不同网站。(可以让一台Apache服务器在访问不同域名时候显示不同的主页)
配置默认,music和news的文件
一个定义格式 命名combined格式 后续的引用既可以
vim /etc/httpd/conf.d/news.conf ##指定域名news.westos.com访问指定默认目录
status页面
内建的一个代码 可以打开把他激活
加到ilinux访问
显示已经装载了 如果没有就用上面哪个loadmodule即可
重启服务
内建的状态页面:
两个进程 因为是两个浏览器在访问该页面
可以使用zabbix或者prometheus监控–好看的页面表示
5.4.16-45.el7 更新php
访问动态页面
动态页面需要和数据库交互 例如输入帐号密码
php cgi
FastCGI 更快
Apache的语言支持:
总结
location和directory一个是以目录做限制,一个是url为对象
304 浏览器有缓存不知道过期没有 就问下服务器 服务器查询如果过期了就200响应
如果服务器缓存没有发生改变就更新了缓存的时间 返回304 表示服务器缓存未改变
401就是之前验证页面需要输入账号密码
502 表示的是浏览器访问代理 代理不能处理 后端真实的服务器也联系不到 就先回复502 表示稍后再来把
keep-alive代表长连接
实体首部 就是body部分多长
cache再varnish中才使用
via就是经过的代理服务器
告诉服务器自己接受的媒体类型
user-agent客户端浏览器型号
请求响应401就是需要输入账号密码 这里就是填完之后向服务器提交的首部包含authorization
第一次客户访问的时候会给set-cookie
www-authenticate 就是第一次弹出的对话框让输入 弹出的过程首部就有这个 意思就是让输入
authorization 就是填好了提交的时候首部用到的
allow就是options方法
location就是重定向的新地址
curl
基于前面的虚拟主机继续
node1 67查询日志
自己伪装
refer就是上级是从哪个连接跳转过来的
可以伪装自己从某个位置跳转过来的
就是向服务器发送head请求方法而不是get
elinks
交互式
会把Html转换
如果有url还可以点击连接跳转
不进入交互式
服务进程用户
普通用户身份运行进程
被劫持后也只是普通用户
只有主进程是root 监听80 特权端口 1023以内 仅管理员有权限使用
子进程向用户请求提供服务 这个才可以被访问到、甚至劫持
访问资源的时候需要看该进程用户是否有权限访问
属组更改
即可访问
和进程权限息息相关的
所以该进程访问该文件 取决于这个进程属主属于拥有什么权限
之所以是apache用户是因为
定义进程所属主
如果alias 另外路径下的文件必须用其他的用户才可以运行怎么办
更改进程用户 document主的就不可以了
可以使用SUexec切换用户
文本类传输时候压缩后传送 文本类压缩很多带宽
图片本身已经压缩过了
该模块默认启动
设置过滤器 名字为DEFLATE
对文本类型都保留过滤后压缩
压缩比 不支持9 消耗cpu
对老版本不支持 如果是老浏览器就不压缩
资源太小不会压缩
压缩了 gzip
之前是2341 压缩后453
https
httpd
ssl模块被当成了单独的包提供 需要安装
http基于这个模块调用ssl库实现了https
https访问流程:
1.三次握手
2.建立ssl会话
3.ssl会话断开
4.四次挥手
测试自建CA:
68是CA机构
67是服务器
为www.ilunx.com主机提供https
加密就是对证书这些内容加密
拷贝给CA 请求签名 等待签名的证书文件 这个应该是证书签署请求csr而不应该是crt
CA机构
签名证书
服务器更改下名字
CA把签署好的证书发送过去
配置服务器工作为https模式
虚拟主机 ip级别的 多个虚拟主机就需要多个ip地址
查询本机虚拟主机
两类虚拟主机
显示虚拟主机80端口有2个 括号内的是配置文件
默认的是ilinux.io
443虚拟主机是再ssl.conf中配置的
为明文的虚拟主机提供
希望网站可以通过http和https访问
建立了多个明文主机 基于主机名 提供https虚拟主机
两种:
只提供https虚拟主机
为某一个80端口的虚拟主机站点提供https访问
配置
主机名www.ilinux.io 表示为这个域名的虚拟主机提供https访问
因为还没有给证书
配置证书保持一致
因为浏览器不知道给服务器发证的CA是谁
导入CA证书
设置–>高级设置–>管理证书–>导入CA证书
这个是因为没有对目录授权 require all granted
CA证书校验成功
输入之后回车两次
长连接哦‘
再httpd上配置的不是很多
配置一般都是再nginx配置的
下篇文章请参考 《lamp配置》 比较新
php + cgi
PHP:超文本预处理文件,动态页面
在默认发布目录下建立文件
vim /var/www/html/index.php
<?php
phpinfo();
?>
安装php插件
yum install -y php
systemctl restart httpd
可以看到文件内容
cgi
CGI:通用网关接口是网站上放置动态内容的最简单的办法
mkdir /var/www/html/cgi
vim /var/www/html/cgi/index.cgi
以下内容可以在172.25.254.111/manual下的CGI:Dynamic Content中找到
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`; 注意data上面的符号
chmod 775 index.cgi
vim /etc/h8ttpd/conf.d/default.conf
<VirtualHost _default_:80>
DocumentRoot /var/www/html
CustomLog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html/cgi">
Options +ExecCGI ##动态页面
AddHandler cgi-script .cgi
</Directory>
测试:在浏览器中:172.25.254.111/cgi/index.cgi
会动态显示时间
vim /var/www/html/cgi/index.cgi
以下内容可以在172.25.254.111/manual下的CGI:Dynamic Content中找到
#!/usr/bin/perl
print “Content-type: text/html\n\n”;
print date
; 注意data上面的符号
chmod 775 index.cgi
vim /etc/httpd/conf.d/default.conf
<VirtualHost _default_:80>
DocumentRoot /var/www/html
CustomLog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html/cgi">
Options +ExecCGI ##动态页面
AddHandler cgi-script .cgi
</Directory>
重启服务
测试:在浏览器中:172.25.254.111/cgi/index.cgi
会动态显示时间
**HTTP:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。
HTTPS:HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。
http与https的区别是什么?
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS和HTTP的区别主要为以下四点:
一、https协议需要到ca申请证书,一般免费证书很少,需要交费。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
SSL作用:
1.认证用户和服务器,确保数据发送到正确的客户机和服务器
2.加密数据以防数据中途被窃取
3.维护数据的完整性,确保数据在传输过程中不被改变
##apache的ssl##################
网页重径向
301永久重径向
302临时重径向
200 到头了
(1)HTTPS (2)重径向
(1)HTTPS配置
HTTPS访问时自动对数据加密,为了网络数据传输的安全。
https访问443端口
对HTTPS访问,需要安装mod_ssl
安装ssl相关插件
yum install -y mod_ssl ## ##会自动生成ssl.conf文件,路径在/etc/httpd/conf.d/
systemctl restart httpd
https://172.25.254.100
##自签名证书(SSL证书制作)
yum install -y crypto-utils
编辑自己的证书页面
genkey www.westos.com ##操作完成之后会出现私钥文件
vim /etc/httpd/conf.d/ssl.conf ##主配置文件中修改
修改证书生成路径
101 SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
108 SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.ke
systemctl restart
第一页:NEXT
第二页:生成1024位的加密私钥
第三页:NO 实验环境,这里无需备案
生成证书签名请求,填写相关信息
修改配置文件
打开浏览器,点击小锁,查看证书
测试:浏览器中:https://172.25.254.112
点击小锁
##网页重写
输入站点名称之后直接转换为https方式,为了方便实验,新建虚拟主机login
https 443
http 80
cd /etc/httpd/conf.d/
cp news.conf login.conf
vim login.conf
<VirtualHost *:443>
ServerName login.westos.com
DocumentRoot /var/www/virtual/login/html
CustomLog logs/login.log combined
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
</VirtualHost>
<Directory "/var/www/virtual/login/html">
Require all granted
</Directory>
mkdir -p /var/www/virtual/login/html
vim /var/www/virtual/login/html/index.html
<h1>login page</h1>
systemctl restart httpd
vim login.conf
##强制重径向
<VirtualHost *:443>
ServerName login.westos.com
DocumentRoot /var/www/virtual/login/html
CustomLog logs/login.log combined
SSLEngine On
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt ##证书
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key ##钥匙
</VirtualHost>
<Directory "/var/www/virtual/login/html">
Require all granted
</Directory>
<VirtualHost *:80> 把所有访问80端口的都转换成https去访问加密的443端口
ServerName login.westos.com
RewriteEngine On
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>
#^(/.*)$表示客户再浏览器中输入的所有字符
https://表示强制客户加密访问
#$1表示^(/.*)$的值
#redirect=301 表示转换时永久的
#%{HTTP_HOST} 表示客户请求主机
地址转换: