第一讲
centos6
cd /var/www/html
vim index.html
<html>
<head>
<title>html语言</title>
</head>
<body>
<h1>标题1</h1>
<p><a href=http://www.magedu.com> 马哥教育 </a>欢迎你 </p>
<h2>标题2</h2>
</body>
</html>
ss -ntl
service httpd start
ss -ntl 80端口打开
iptables -vnL
chkconfig iptables off
service iptables stop
centos7
systemctl disable firewalld
systemctl stop firewalld
网页访问:192.168.29.126
centos6
vim index.txt
欢迎来到lol
网页访问:192.168.29.126/index.txt
数据的封装:后——>前: 帧(帧:源/目标mac地址)+ip+tcp+http报头+data
http://www.w3school.com.cn/media/media_mimeref.asp
此网站是在线的html教学,可以看看
developer.mozilla.org 在线教学html
www.jr.jd.com 右键,查看网页源代码
mac.xunlei.com 网页很炫,看看即可
第二讲
cat /etc/mime.types
curl -I www.jd.com 只看头部
抓包软件:wireshark
URL: Uniform Resorce Locator,统一资源定位符,用于描述某服务器某特定资源位置
<scheme>://<user>:<password>@<host>:<port>/<path>;<params> ?<query>#<frag>
IP(独立IP):
记录远程客户机IP地址的计算机访问网站的次数,是衡量网站流量的重要指标。
浏览器:www.ip138.com 可以显示出地址来源
centos7命令行操作:firefox www.ip138.com
PV(访问量):网站被访问的页面数量
UV(独立访客):访问某网站的电脑的数量
网站统计排名:http://www.alexa.cn/rank/
pstree -p 查看http的进程
centos7操作:
yum -y install telnet
操作1
telnet 192.168.29.126 80
GET / HTTP/1.1 ——> 下载 主页 http/1.1 ——> 主页就是/var/www/html
资源放置于本地文件系统特定的路径:DocRoot DocRoot /var/www/html 映射关系
host: 192.168.29.126
回车
回车
GET 必须大写,其他无所谓
操作2
centos6
cd /var/www/html
mkdir /var/www/html/download/
echo "welcome to lol" > /var/www/html/download/a.txt
cat /var/www/html/download/a.txt
centos7
telnet 192.168.29.126 80
GET /download/a.txt http/1.1
host: 192.168.29.126
操作3
centos6
cd /var/www/html;ll
ln -s ../../../../etc/fstab download/fstab
ll download/fstab
centos7
telnet 192.168.29.126 80
GET /download/fstab http/1.1
host: 2.2.2.2 有时候可以与telnet的IP不一致,但是有时候是强制一致的
centos6
cat /var/log/httpd/access_log 记录日志
市场占有率统计 www.netcraft.com
http://www.apache.org/
点击:HTTP Server
ulimit -a 查看用户的进程最大数量
第三讲
centos6
ll /etc/httpd/ 配置文件以此文件夹为根
chkconfig --list httpd
chkconfig httpd on
service httpd status
service httpd start
ps aux 以root身份运行,以apache身份提供服务
cat /etc/init.d/httpd 脚本
cat /etc/sysconfig/httpd 脚本配置文件
检查配置语法:
httpd –t
service httpd configtest
which httpd
站点网页文档根目录: /var/www/html
模块文件路径:
/etc/httpd/modules 软链接
/usr/lib64/httpd/modules 真实路径
主程序文件:
ll /usr/sbin/ht*
帮助文档包: httpd-manual
yum -y install httpd-manual
rpm -ql httpd-manual
service httpd restart
浏览器:http://192.168.29.126/manual/
主配置文件/etc/httpd/conf/httpd.conf 备份一下
cd /etc/httpd/conf, ll
cp httpd.conf httpd.conf.bak, ll
grep -v "^#" httpd.conf|grep -v "^$"|less
配置格式:directive value 指令 值
解决服务器名称报错信息
法一:
vim httpd.conf
搜索"/ServerName"
#ServerName www.example.com:80 去掉"#"即可,建议写自己网站的真正的名字
httpd -t 即可解决报错信息
法二:
vim /etc/hosts
第一行localhost前面,添加centos6.fgq.com,也可以解决报错信息
显示服务器版本信息 ServerTokens
vim httpd.conf
搜索:/ServerTokens
ServerTokens OS OS改为prod或者productonly
service httpd reload
浏览器:
http://httpd.apache.org/ ——>project——>HTTP Server——>Documentation,Version 2.2——>
配置指令——>S——>ServerTokens——>ServerTokens Directive 查看相关信息
centos7操作:
curl -I 192.168.29.126 Server就不会出现apache版本号了,不易受到攻击了
yum -y install elinks
elinks 192.168.29.126
centos6
vim httpd.conf
搜索:/Listen
Listen 80 注释掉#
添加信息
Listen 192.168.29.126:80或者Listen 192.168.1.5:80或者
Listen 192.168.29.126:9527 或者 再添加一条:listen 80
非标准端口9527,selinux需要关闭
getenforce
setenforce 0
vim /etc/selinux/config
enforcing改为permissive
service httpd restart 需要重启服务,reload不可以
ss -ntl
centos7操作:curl -I 192.168.1.5访问不了
或者
centos7操作:curl -I 192.168.29.126访问不了
或者
centos7操作:curl -I 192.168.29.126:9527 看头部 curl 192.168.29.126:9527 看网页
或者
centos7操作:
curl -I 192.168.29.126:9527 或 curl -I 192.168.1.5 或
curl -I 192.168.29.126 或 curl -I 192.168.1.5:9527访问不了
vim httpd.conf
搜索:/Keepalive 把off变为on
15s断开改为20s断开
service httpd restart
centos7
telnet 192.168.29.126 80
GET / http/1.1
host:2.2.2.2
最下面出现:Connection closed by foreign host 表示KeepAlive是off的
telnet 192.168.29.126 80
GET / http/1.1
host:2.2.2.2
GET /a.txt http/1.1
host:2.2.2.2
20s后即会断开
游戏电商需要持久连接,根据访问量控制断开时间
更换使用的httpd程序
vim /etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.worker 去掉#,使其生效
service httpd restart
pstree -p|grep httpd
centos7
yum -y install httpd-tools
ab -c 1000 -n 10000 http://192.168.29.126/ 测试性能
第四讲
vim /etc/init.d/httpd
编译安装此文件作为模板,更改文件的路径即可
vim .bashrc
增加信息:
alias cdnet='cd /etc/sysconfig/network-scripts'
alias vihttpd='vim /etc/httpd/conf/httpd.conf'
alias cdwww='cd /var/www/html'
. .bashrc
. ~/.bashrc 使文件生效 刚打开一个新界面,别名不能用时,使用此命令
打开新界面:. /root/.bashrc使命令生效
vim /etc/httpd/conf/httpd.conf
prefork的默认配置: ppt
worker的默认配置: ppt
cd /etc/httpd/modules
pwd -P 看真正的物理路径
加载动态模块配置
/etc/httpd/conf/httpd.conf
配置指定实现模块加载格式: LoadModule <mod_name> <mod_path>
模块文件路径可使用相对路径: 相对于ServerRoot(默认/etc/httpd)
定义'Main' server的文档页面路径
vim /etc/httpd/conf/httpd.conf
搜索:/DocumentRoot
DocumentRoot "/var/www/html"改为:"/app/website1"
cd /app;mkdir website1;cd website1;
vim index.html
<h1>welcome to website1</h1>
service httpd reload
浏览器:192.168.29.126看是否成功
vim /etc/httpd/conf/httpd.conf
搜索:/conf.d
/etc/httpd/conf.d/*.conf 这也是配置文件
cd /etc/httpd/conf.d
cat welcome.conf
mv welcome.conf welcome.conf.bak 欢迎界面即可关闭
error文件在/var/www/error,在图形界面观看,即可看到内容
cd /var/www/html
mv index.html a.html
service httpd restart
浏览器:192.168.29.126 可以访问到索引列表
<Directory>中“基于源地址”实现访问控制
vim /etc/httpd/conf/httpd.conf
Options -Indexes FollowSymLinks Indexes前面加一个减号,不能访问索引列表
注释掉DocumentRoot "/var/www/html"并在下面添加信息
DocumentRoot "/app/website1"
<Directory "/app/website1">
Options indexes
</Directory>
!ser
浏览器:192.168.29.126 可以访问到索引列表
Options -indexes 在indexes前面加一个减号即不能访问
cd /app/website1;
ln -s ../../etc/hosts hosts.txt;ll
浏览器:192.168.29.126/hosts.txt
vim /etc/httpd/conf/httpd.conf
Options -indexes -FollowSymLinks
service httpd restart
浏览器:192.168.29.126/hosts.txt 禁止访问
indexes 不写,默认不开启
FollowSymLinks 不写,默认开启
cd /app/website1;mkdir bbs;
cd bbs/;
cp /etc/fstab a.txt
cp /etc/fstab b.txt
ln -s ../../../../etc/hosts hosts.txt
浏览器:更改设置,看是否可以看到索引列表,父目录控制子目录
vim /etc/httpd/conf/httpd.conf
搜索:/.htaccess
AccessFileName .htaccess 注意准确定位
搜索:/website1
Options此行内容更改为:AllowOverride All
cd /app/website1;
vim .htaccess
options indexes followsymLinks
浏览器:192.168.29.126
一般不用.htaccess,易乱
ll -a
order和allow、deny order:
定义生效次序;写在后面的表示默认法则
Order allow,deny
Order deny,allow
vim /etc/httpd/conf/httpd.conf
搜索:/website1
AllowOverride All此行内容更改为:
order allow,deny
deny from 192.168.29.127
allow from 192.168.29.1
!ser
httpd -t
centos7:curl http://192.168.29.126/ 403 Forbidden
浏览器:192.168.29.126
cd /app/website1
mv a.txt indexes.html
vim /etc/httpd/conf/httpd.conf
allow from 192.168.29.1 把1变为127
!ser
浏览器:192.168.29.126
第五讲
cat /var/log/httpd/error_log
vim /etc/httpd/conf/httpd.conf
搜索:/error_log
debug, info, notice, warn, error, crit,alert, emerg
LogLevel warn 表示warn以上级别(严重)的操作需要记录日志
搜索:/mod_log
mod_log_config 记录日志的模块,禁用则不能记录日志
浏览器:http://httpd.apache.org/docs/2.2/logs.html ——>format strings
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
%h 客户端IP地址
%l 远程用户,启用mod_ident才有效,通常为减号“-”
%u 验证(basic,digest)远程用户,非登录访问时,为 一个减号“-”
%t 服务器收到请求时的时间
%r First line of request,即表示请求报文的首行;记录了 此次请求的“方法”,“URL”以及协议版本
%>s 响应状态码
%b 响应报文的大小,单位是字节;不包括响应报文http首部
%{Referer}i 请求报文中首部“referer”的值;即从哪个页 面中的超链接跳转至当前页面的
Referer:可以防止其他公司链接自己网页的信息
%{User-Agent}i 请求报文中首部“User-Agent”的值;即 发出请求的应用程序
shift+F5:强行刷新网页,不使用缓存
centos7:
curl -i http://192.168.29.126/ 头部加数据
或links——>192.168.29.126 或 links 192.168.29.126 测试用
网页打开,F12,network,headers,Referer
vim /etc/httpd/conf/httpd.conf
LogFormat "%h %t %u \"%{User-Agent}i\"" fenglog
CustomLog logs/access_log fenglog 只能有一个CustomLog,所以其他注释掉
!ser
httpd -t
tail -f /var/log/httpd/access_log
设定默认字符集
AddDefaultCharset UTF-8
中文字符集:GBK, GB2312, GB18030
定义路径别名
格式: Alias /URL/ "/PATH/"
vim /etc/httpd/conf/httpd.conf
<Directory "/app/website1/bbs">
Options indexes
</Directory>
下面添加信息:alias /download /testdir/download/
!ser
httpd -t
mkdir -p /testdir/download
echo '<h1>welcome to huojia_fengzhuang</h1>' > /testdir/download/index.html
浏览器:192.168.29.126/download/
http://httpd.apache.org/docs/2.2/mod/mod_alias.html#alias 查看具体的alias帮助文档
vim /etc/httpd/conf/httpd.conf
alias信息更改为:AliasMatch ^/image/(.*)$ /ftp/pub/image/qiangge$1
!ser
httpd -t
mkdir -p /ftp/pub/image/
cp /etc/fstab /ftp/pub/image/qianggea.txt
浏览器:192.168.29.126/image/a.txt
/images
/var/site1 /var/site2
www.site1.com/images
www.site2.com/images 二者都指向images
image.png
image.png
image.png
image.png
image.png
image.png
基于用户的访问控制
rpm -qf `which htpasswd`
rpm -ql httpd-tools
自己规划把创建的账户放在/etc/httpd/conf.d/下面
htpasswd -c /etc/httpd/conf.d/.htusers httpuser1
htpasswd -s /etc/httpd/conf.d/.htusers httpuser2
cat /etc/httpd/conf.d/.htusers
chmod 600 /etc/httpd/conf.d/.htusers
setfacl -m u:apache:r /etc/httpd/conf.d/.htusers
mkdir admin; cd admin/
echo '<h1>welcome to henansheng_huojia_fengzhuang</h1>' > index.html
cat index.html
浏览器:192.168.29.126/admin/
进行权限控制
vim /etc/httpd/conf/httpd.conf
<Directory "/app/website1/admin">
authtype basic
authname "admin directory"
authuserfile "/etc/httpd/conf.d/.htusers"
require user httpuser1 httpuser2
</Directory>
"require user httpuser1 httpuser2"更改为:require valid-user 允许账号文件中的所有用户登录访问
httpd -t
!ser
浏览器:192.168.29.126/admin/
centos7:
curl -I http://192.168.29.126/ 可以访问
curl -I http://192.168.29.126/admin 401身份验证
vim /etc/httpd/conf/httpd.conf
把信息更改为:
<Directory "/app/website1/admin">
allowoverride authconfig
</Directory>
cd /app/website1/admin
vim .htaccess 哪个目录需要验证就放在哪个目录下;或者放在/etc/httpd/conf/下面
authtype basic
authname "admin directory"
authuserfile "/etc/httpd/conf.d/.htusers"
require valid-user
!ser
tail -f /var/log/httpd/access_log
centos7:links 192.168.29.126/admin
基于组账号进行认证
vim /etc/httpd/conf.d/.htgroups
group1:httpuser1 httpuser2
group2:httpuser3
cd /app/website1/admin
vim .htaccess
authtype basic
authname "admin directory"
authuserfile "/etc/httpd/conf.d/.htusers"
authgroupfile "/etc/httpd/conf.d/.htgroups"
require group group2
!ser
centos7:links 192.168.29.126/admin
远程客户端和用户验证的控制
Satisfy ALL|Any
ALL 客户机IP和用户验证都需要通过才可以
Any客户机IP和用户验证,有一个满足即可
vim /etc/httpd/conf/httpd.conf
搜索:/.htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
例子:
Require valid-user
Order allow,deny
Allow from 192.168.1
Satisfy Any
第六讲
虚拟主机
cd /etc/httpd/conf
cp httpd.conf.bak httpd.conf 还原主配置文件
浏览器:192.168.29.126
cd /etc/httpd/conf.d
mv welcome.conf.bak welcome.conf
浏览器:192.168.29.126
vim /etc/httpd/conf/httpd.conf
搜索:/conf.d/
在/etc/httpd/conf.d/下实现虚拟主机
基于IP的虚拟主机
增加IP地址
ip addr add 192.168.29.128/24 dev eth1 label eth1:1
ip addr add 192.168.29.129/24 dev eth1 label eth1:2
ip a
centos7:ping 192.168.29.128/129
cd /var/www/html
echo "welcome to fgq_lol" > index.html
浏览器:192.168.29.126/128/129
建立3个网站,首先建立目录
cd /app;ls
cp -r website1/ website2
cp -r website1/ website3
tree
cat website1/index.html: <h1>welcome to website1</h1>
vim website2/index.html: <h1>welcome to website2</h1>
vim website3/index.html: <h1>welcome to website3</h1>
让web服务器知道
cd /etc/httpd/conf.d
vim vhosts.conf .conf结尾的文件即可
参考/etc/httpd/conf/httpd.conf文件最下方的内容<VirtualHost *:80>进行编辑
:r!tail -10 /etc/httpd/conf/httpd.conf
<VirtualHost 192.168.29.126:80> 根据第一个来复制粘贴下面2个
DocumentRoot /app/website1
ServerName www.a.com 基于IP的虚拟主机,此行未生效
ErrorLog logs/website1_error_log
CustomLog logs/website1_access_log common
</VirtualHost>
<VirtualHost 192.168.29.128:80>
DocumentRoot /app/website2
ServerName www.b.com
ErrorLog logs/website2_error_log
CustomLog logs/website2_access_log common
</VirtualHost>
<VirtualHost 192.168.29.129:80>
DocumentRoot /app/website3
ServerName www.c.com
ErrorLog logs/website3_error_log
CustomLog logs/website3_access_log common
</VirtualHost>
httpd -t
service httpd restart
centos7:curl 192.168.29.126/128/129
centos7:vim /etc/hosts 添加信息,进行解析即可
192.168.29.126 www.a.com/www.aaa.com
192.168.29.128 www.b.com
192.168.29.129 www.c.com
centos7:curl www.a.com/www.b.com/www.c.com/www.aaa.com都可以找到,和域名没关系,纯粹是通过IP找到的
cd /var/log/httpd/; ls
基于端口的虚拟主机
注意启用非标准端口的时候,selinux需要禁用
vim /etc/httpd/conf.d/vhosts.conf
根据前面做的实验,把端口更改一下,IP可以换成一样的,其他不变
listen 8001
listen 8002
listen 8003
<VirtualHost 192.168.29.126:8001>
DocumentRoot /app/website1
ServerName www.a.com
ErrorLog logs/website1_error_log
CustomLog logs/website1_access_log common
</VirtualHost>
<VirtualHost 192.168.29.126:8002>
DocumentRoot /app/website2
ServerName www.b.com
ErrorLog logs/website2_error_log
CustomLog logs/website2_access_log common
</VirtualHost>
<VirtualHost 192.168.29.126:8003>
DocumentRoot /app/website3
ServerName www.c.com
ErrorLog logs/website3_error_log
CustomLog logs/website3_access_log common
</VirtualHost>
service httpd restart
ss -tnl
grep -i listen /etc/httpd/conf/httpd.conf 80端口默认绑定在所有IP上
centos7:curl www.aaa.com/www.b.com/www.c.com 都跳转到原来的主页面了,没有明确定义的,就走默认网站
注意:一般虚拟机不要与main主机混用;因此,要使用虚拟主机, 一般先禁用main主机
禁用方法:注释中心主机的DocumentRoot指令即可
centos7:curl www.aaa.com:8001/8002/8003
以上两者不经常使用,经常使用的是FQDN
基于FQDN(域名)的虚拟主机
centos7:vim /etc/hosts
192.168.29.126 www.a.com www.b.com www.c.com 正常情况下,是要用dns来做的
vim /etc/httpd/conf/httpd.conf
搜索:/NameVirtualHost
vim /etc/httpd/conf.d/vhosts.conf
NameVirtualHost *:80 或者 namevirtualhost *:80 添加此信息,更改一下IP和端口即可
<VirtualHost *:80>
DocumentRoot /app/website1
ServerName www.a.com
ErrorLog logs/website1_error_log
CustomLog logs/website1_access_log common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /app/website2
ServerName www.b.com
ErrorLog logs/website2_error_log
CustomLog logs/website2_access_log common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /app/website3
ServerName www.c.com
ErrorLog logs/website3_error_log
CustomLog logs/website3_access_log common
</VirtualHost>
httpd -t
!ser
centos7:curl www.a.com/www.b.com/www.c.com
centos7:curl 192.168.29.126/128/129都是访问的webiste1
以基于名字的虚拟主机,IP访问时,默认采用文件vhosts.conf定义的第一个虚拟主机
通过IP地址找到主机,通过socket找到这个程序,socket文件是如何区分不同的网站的呢?如何知道谁是a,b,c呢?
http协议里,socket就是IP地址+端口号,通过抓包软件,
可以看出应用层的数据包里含有域名,即发出的请求里面含有域名。
服务器根据应用层的信息可以返回相应的网页数据信息。
centos7:telnet 192.168.29.126 80
GET / HTTP/1.1
HOST:WWW.B.COM/HOST:WWW.A.COM 返回的结果是完全不同的,
以前是因为没有基于名字的虚拟主机,可以随便写的,返回默认结果即可。
image.png
status页面
vim /etc/httpd/conf/httpd.conf
搜索:/Location 或者 /status
vim /etc/httpd/conf.d/vhosts.conf 添加Location复制而来的信息,进行编辑
namevirtualhost *:80
<VirtualHost *:80>
DocumentRoot /app/website1
ServerName www.a.com
ErrorLog logs/website1_error_log
CustomLog logs/website1_access_log common
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from all(更改了,其他不变)
</Location>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /app/website2
ServerName www.b.com
ErrorLog logs/website2_error_log
CustomLog logs/website2_access_log common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /app/website3
ServerName www.c.com
ErrorLog logs/website3_error_log
CustomLog logs/website3_access_log common
</VirtualHost>
httpd -t
service httpd restart
浏览器:192.168.29.126/server-status
centos7: links http://www.a.com/server-status
centos7: curl 192.168.29.126/server-status
centos7: ab -c 1000 -n 20000 192.168.29.126/server-status
控制只有特定的域或者主机可以访问
vim /etc/httpd/conf.d/vhosts.conf
Location里面的Allow from all更改为Allow from 192.168.29.1
centos7就不能访问,只有Windows可以访问
centos7: links http://www.a.com/server-status不能访问
浏览器:192.168.29.126/server-status可以访问
vim /etc/httpd/conf/httpd.conf
搜索:/status
vim /etc/httpd/conf.d/vhosts.conf
ExtendedStatus On 放在虚拟主机外面,即VirtualHost最上面,
不能在二者</VirtualHost>......<VirtualHost *:80>中间
!ser
浏览器:192.168.29.126/server-status显示内容更多
image.png
image.png
image.png
image.png
image.png
image.png
看上图
解决http协议无状态方法
cookie 客户端存放
session 服务端存放
googe浏览器——设置——高级——隐私设置和安全性——内容设置——cookie
method: 请求方法,标明客户端希望服务器对资源执行的动作
telnet命令操作时,使用这些命令
GET、HEAD、POST上传等
CURL -I www.a.com:只要头部信息,相当于HEAD
GET:从服务器获取一个资源
HEAD:只从服务器获取文档的响应首部
POST:向服务器输入数据,通常会再由网关程序继续处理——表单
PUT:将请求的主体部分存储在服务器中,如上传文件——文件
DELETE:请求删除服务器上指定的文档
TRACE:追踪请求到达服务器中间经过的代理服务器
OPTIONS:请求服务器返回对指定资源支持使用的请求方法
协议查看或分析的工具: tcpdump, wireshark,tshark
tcpdump -i eth1 -nn -v
wireshark需要下载
status(状态码):
1xx:100-101 信息提示
2xx:200-206 成功
3xx:300-305 重定向 centos7:curl -I http://www.360buy.com或http://www.jd.com
4xx:400-415 错误类信息,客户端错误
5xx:500-505 错误类信息,服务器端错误
200: 成功,请求数据通过响应报文的entity-body部分发送;OK
301: 请求的URL指向的资源已经被删除;
但在响应报文中通过首部 Location指明了资源现在所处的新位置;Moved Permanently
302: 与301相似,但在响应报文中通过Location指明资源现在所处 临时新位置; Moved Temporarily
304: 客户端发出了条件式请求,但服务器上的资源未曾发生改变 ,则通过响应此响应状态码通知客户端;Not Modified
401: 需要输入账号和密码认证方能访问资源;Unauthorized
403: 请求被禁止;Forbidden
404: 服务器无法找到客户端请求的资源;Not Found
500: 服务器内部错误;Internal Server Error
502: 代理服务器从后端服务器收到了一条伪响应,如无法连接到父网关;Bad Gateway
tail /var/log/httpd/access_log 里面的地址是IP层的地址,有可能是代理服务器的IP,而不是真正的客户端的IP
image.png
curl工具
curl是基于URL语法在命令行方式下工作的文件传输工具,
它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议。
curl支持HTTPS认证,并且支持 HTTP的POST、PUT等方法, FTP上传, kerberos认证, HTTP上传,代理服务器,
cookies,用户名/密码认证,下载文件断点续传,上载文件断点续传,
http代理服务器管道( proxy tunneling),还支持IPv6,socks5代理服务器,
通过http代理服务器上传文件到FTP服务器等,功能十分强大
vim /etc/httpd/conf.d/vhosts.conf
CustomLog logs/website1_access_log common
common变为combined
!ser
tail -f /var/log/httpd/website1_access_log
centos7: curl -A "IE9" http://www.a.com/ 设置用户代理发送给服务器,伪造使用哪个浏览器访问
centos7: curl -e "http://www.baidu.com" http://www.a.com/ 来源网址,伪造从哪个网站跳转过来
centos7: curl --compressed http://www.a.com/ 要求返回是压缩的格式,需要配置文件里启用此功能模块,否则不能使用
centos7: curl -H "host:www.b.com" http://www.a.com 自定义首部信息传递给服务器
访问的是website2,不是website1,因为指定了host
centos7: curl -i http://www.a.com/ 实体和头部信息都显示
centos7: curl -I http://www.a.com/ 只显示头部信息
centos7: curl -D header http://www.a.com;cat header 将url的header信息存放在指定文件中
vim /etc/httpd/conf.d/vhosts.conf
<Directory /app/website1/admin> 添加到主机1 virtualhost里面
allowoverride authconfig
</Directory>
!ser
centos7: curl --basic -u httpuser3:123456 www.a.com/admin 出现301跳转页面
-u/--user <user[:password]> 设置服务器的用户和密码
centos7: curl -o bb.txt www.a.com/b.html; cat bb.txt 将网络文件保存为指定的文件中
centos7: curl -O www.a.com/b.html 使用URL中默认的文件名(b.html)保存文件到本地
centos7: curl -o bb.html --limit-rate 30 www.a.com/b.html 30个字节的传输
--limit-rate 设置传输速度 有时候需要限速,以防止拖垮服务器
centos7: curl -0 www.a.com 使用HTTP 1.0
-L 选项进行强制重定向
-C - 选项可对文件使用断点续传功能
-c/--cookie-jar <file name> 将url中cookie存放在指定文件中
-x/--proxy <proxyhost[:port]> 指定代理服务器地址
-U/--proxy-user <user:password> 代理服务器用户和密码
-T 选项可将指定的本地文件上传到FTP服务器上
--data/-d 方式指定使用POST方式传递数据
elinks工具: links
links -dump www.a.com 不进入交互式模式,而直接将URL的内容输出至标准输出
elinks -source www.a.com 打印源码
玩:
links -dump www.jd.com
links -dump 网址 可以下载网页上面的文字或者内容(博客,书籍,商城...)
image.png
使用mod_deflate模块压缩页面优化传输速度
cp /var/log/httpd/access_log /app/website1/a.txt 准备一个大文件
centos7: curl -I www.a.com/a.txt
centos7: curl --compressed -I www.a.com/a.txt 未启用此模块,未压缩
vim /etc/httpd/conf/httpd.conf
搜索:/deflate 看此模块是否加载
LoadModule deflate_module modules/mod_deflate.s 表示加载
vim /etc/httpd/conf.d/vhosts.conf
在最下面添加信息:
SetOutputFilter DEFLATE 启用压缩
DeflateCompressionLevel 9 压缩比
# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
service httpd restart
curl --compressed -I www.a.com/a.txt
curl -I www.a.com/a.txt 比较Content-Length的大小即可
image.png
https
yum -y install mod_ssl 配置httpd支持使用ssl,及使用的证书
配置文件:/etc/httpd/conf.d/ssl.conf
rpm -ql mod_ssl
cd /etc/httpd/conf.d; httpd -M |grep ssl
service httpd restart
浏览器:https://192.168.29.126——高级——继续访问
F12——Security——View certificate——详细信息——复制文件——下一步——下一步——保存在桌面a文件——完成
增加信任:设置——高级——管理证书——受信任的根证书颁发机构——导入——下一步——把桌面下载的a文件导入——
下一步——浏览栏中,选择:受信任的根证书颁发机构——完成——是
颁发证书
centos7.3——客户端
centos6.9——web服务器
centos6-3——CA
centos6-3操作
cd /etc/pki/tls/
vim openssl.cnf 复制下面的内容
dir = /etc/pki/CA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
#unique_subject = no # Set to 'no' to allow creation of
# several ctificates with same subject.
new_certs_dir = $dir/newcerts # default place for new certs.
certificate = $dir/cacert.pem # The CA certificate
serial = $dir/serial # The current serial number
crlnumber = $dir/crlnumber # the current crl number
# must be commented out to leave a V1 CRL
crl = $dir/crl.pem # The current CRL
private_key = $dir/private/cakey.pem# The private key
RANDFILE = $dir/private/.rand # private random number file
x509_extensions = usr_cert # The extentions to add to the cert
cd /etc/pki/CA
(umask 066 ;openssl genrsa -out private/cakey.pem 1024) 私钥
openssl req -new -x509 -key private/cakey.pem -out cacert.pem 自己给自己是509
CN,henan,zhengzhou,magedu.com,IT,ca.magedu.com,回车 邮箱不用了
ll
sz cacert.pem 传到Windows里,打开下载,把文件后缀改为cacert.crt,默认时间为1个月,更改为1年,date
centos6操作
cd /etc/httpd/conf.d; mkdir ssl; cd ssl;
(umask 066 ;openssl genrsa -out httpd.key 1024)
openssl req -new -key httpd.key -out httpd.csr
CN,henan,xinxiang,magedu.com,IT,www.a.com,回车,回车,回车
ll
scp httpd.csr 192.168.29.132:/etc/pki/CA/ 此IP地址是centos6-3的IP
如果centos6-3的scp命令没有安装需要安装,否则即使本机有scp命令也传不过去
yum -y install openssh-clients
centos6-3操作:颁发证书
cd /etc/pki/CA; ls
echo 01 > serial
touch index.txt
openssl ca -in httpd.csr -out certs/httpd.crt -days 10
y, y
ls newcerts/; ls certs/
scp certs/httpd.crt 192.168.29.126:/etc/httpd/conf.d/ssl
scp cacert.pem 192.168.29.126:/etc/httpd/conf.d/ssl
scp cacert.pem 192.168.29.127: 传到根下面了
centos6操作:
cd /etc/httpd/conf.d/ssl; ll
cd /etc/httpd/conf.d/
rpm -q --scripts mod_ssl
vim ssl.conf
SSLCertificateFile /etc/httpd/conf.d/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/conf.d/ssl/httpd.key
SSLCACertificateFile /etc/httpd/conf.d/ssl/cacert.pem
service httpd restart
centos7: firefox https://192.168.29.126
浏览器:https://192.168.29.126
不信任,和上一回生成证书的步骤相同,来生成证书
修改Windows的host文件:win键+r: c:\Windows\System32\drivers\etc
在host文件的最下面添加信息:192.168.29.126 www.a.com
centos7图形界面的命令行: firefox https://192.168.29.126
centos7图形界面的命令行: firefox https://www.a.com
centos7: curl --cacert cacert.pem https://www.a.com
centos7: curl -k https://192.168.29.126 -k忽略证书
centos7: openssl s_client -connect www.a.com:443 模拟图形界面的浏览器访问
googel: https://192.168.29.126 或者 https://www.a.com 可以访问
搜狗: https://192.168.29.126 或者 https://www.a.com 可以访问
IE浏览器不能访问
vim /etc/httpd/conf.d/ssl.conf
在文件的<VirtualHost _default_:443>下面添加信息:
DocumentRoot /app/website1
把ServerName更改为:ServerName www.a.com:443 使用的是虚拟主机要更改,默认网站则不用更改
googel: https://192.168.29.126/a.txt 或者 https://www.a.com/a.txt 可以访问
搜狗: https://192.168.29.126/a.txt 或者 https://www.a.com/a.txt 可以访问
vim /etc/httpd/conf.d/vhosts.conf
Redirect temp / https://www.a.com/ 添加到虚拟主机website1里面
service httpd restart
centos7图形界面的命令行: firefox http://www.a.com 会跳转至:https://www.a.com
此访问是通过服务器跳转,需要经过网络,也不是很安全,
最好是用户访问的时候,直接就是https网站,这需要用到HSTS,下面内容就是
image.png
HSTS
服务器端配置支持HSTS后,会在给浏览器返回的HTTP首部中携带 HSTS字段。
浏览器获取到该信息后,会将所有HTTP访问请求在内部 做307跳转到HTTPS。而无需任何网络过程
vim /etc/httpd/conf.d/vhosts.conf
删除此行信息:Redirect temp / https://www.a.com/
并添加下面的信息到虚拟主机website1里面
Header always set Strict-Transport-Security "maxage=15768000" 秒为单位
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
service httpd restart
centos7: curl -I http://www.a.com 301跳转
centos7图形界面的命令行: firefox http://www.a.com 跳转至https
centos7: curl -I http://www.jd.com
命令工具
ab -c 2000 -n 29999 http://www.a.com/ 不能执行,打开的文件过多,受限制
ulimit -a 打开的文件数是1024
ulimit -n 60000 设定打开的文件数量是60000 调整能打开的文件数
ab -c 2000 -n 29999 http://www.a.com/ 能执行
apachectl:httpd自带的服务控制脚本,支持start和stop,相当于service
ab [OPTIONS] URL
httpd-tools包
-n:总请求数
-c:模拟的并行数
-k:以持久连接模式测试
tcpcopy:网易,复制生产环境中的真实请求,并将之保存
image.png
image.png
网友评论