Apache

http 的默认端口:80/tcp
https 的默认端口:443/tcp

http协议的版本:
http/0.9
http/1.0
http/1.1
http/2.0

socket:BSD是 socket ipc的一种实现,允许在不同的主机上的进程之间相互通信的解决方式
基于套接字有三中通信:
tcp套接字
udp套接字
裸套接字
套件字的使用格式
ipv4
ipv6
unix sock

工作的模式:
一次完整http事务:请求 -- 响应

URL 资源的标记 用于表示服务器上的资源的位置

资源的种类:
静态资源:txt、jpg ...
动态资源:
服务器端:php jsp...
客户端:.js

http请求的过程
1、建立或处理连接 接收或拒绝请求
2、接收请求 接收客户端发来的请求报文
3、处理请求 对请求报文进行解析
4、访问资源 通过存储IO获取用户请求的资源
5、构建响应报文
6、发送响应报文
7、记录于日志中

http的并发响应模型:
单进程IO模型 串行响应
多进程IO模型 启动多个进程 每个进程响应一个请求
复用Io模型 一个进程生成多个线程 每个线程响应一个请求

http请求处理的连接方式
保持连接:长连接 keepalive
非保持连接:短连接

httpd的特性:
高度模块化的设计 核心(core) + modules
modules 支持动态装载和卸载

支持MPM 
MPM:multipath processing modules  多路处理的模块
  prefork:一个主进程,多个子进程,一个进程响应一个请求
    主进程:管理子进程,创建套接字 接收用户请求,并派发给某子进程处理...
    子进程:处理、响应请求
  worker:多进程、多线程模型 一个线程响应一个请求; 
    主进程:管理子进程,创建套接字,接收用户请求,并派发给某子进程处理...
    子进程:负责管理线程
    线程:处理并响应请求 
  event:事件驱动模型,多进程模型,每个进程响应多个请求;
    主进程:管理子进程,创建套接字,接收用户请求,并派发给某子进程处理...
    子进程:处理并响应请求; 

httpd-2.2 event为测试模式
    centos 6
httpd-2.4 可以在企业中正常使用
    centos 7

httpd的版本:
httpd-1.3 官方已经停止维护
httpd-2.0
httpd-2.2
httpd-2.4

官方网站:httpd.apache.org

安装httpd:
rpm包、yum base源安装:
编译安装:定制新功能、其他原因
centos 6 httpd-2.2
sysinit脚本 /etc/rc.d/sysinit.d/httpd
配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
程序文件:
/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker

     脚本配置文件:/etc/sysconfig/httpd
    日志文件:/var/log/httpd  access_log 访问日志  error_log 错误日志

centos 7 httpd-2.4
    systemd Unit file  /usr/lib/systemd/system/httpd.service

注意在做测试之间关闭iptables -F 防火墙
centos 6 httpd安装:
yum -y install httpd
service httpd restart 启动httpd 服务
chkconfig httpd on| off 开机自动启动

ss -tnl 可以查看地址的80 端口是否开启
LISTEN 0 128 :::80

可以用浏览器访问一下本机的ip地址
会进入一个欢迎使用apache的页面 说明没有问题
这个欢迎页面的程序在 /etc/httpd/conf.d 下的welcome.conf 这个文件

当把它改个名字 mv welcome.conf welcome.conf.bak
在重复一下服务器 service httpd reload
在测试就没了 不过它会到/var/www/html/下去找文件

这是修改玩的测试页面:
Index of /

[ICO]   Name    Last modified   Size    Description
Apache/2.2.15 (CentOS) Server at 172.20.10.4 Port 80

到/var/www/html/ 随便编辑一些东西吧
vim /var/www/html/chenedu.html
hello chen

测试页面冲刷一下
http://172.20.10.4/chenedu.html
hello chen

centos 7 httpd安装:
yum -y install
程序环境:
配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.modules.d/.conf
/etc/httpd/conf.d/
.conf
程序文件:
/usr/sbin/httpd
MPM支持DSO机制,所以各为一个独立的模块;

日志文件:
/var/log/httpd
access_log:访问日志
error_log:错误日志
站点文档根目录:
/var/www/html
模块文件路径:
/usr/lib64/httpd/modules

systemctl restart httpd 启动httpd服务

systemctl enable httpd 开机自动启动

ss -tnl 查看80 端口
LISTEN 0 128 :::80

httpd—2.2的配置 centos 6
主配置文件: /etc/httpd/conf/httpd.conf
注意在修改配置文件之间先备份一下
cp -r httpd.conf httpd.conf.bak

在 /etc/httpd/conf/httpd.conf文件下的三种配置段
Section 全局配置
Section 1: Global Environment 全局的配置段

Section 2: 'Main' server configuration 中心服务器配置段

Section 3: Virtual Hosts 虚拟主机配置段

在修改httpd 的配置文件时
httpd -t 测试语法是否有问题
service httpd reload | restart

/etc/httpd/conf/httpd.conf 主文件配置的内容和修改定义:
1、修改的监听的端口
Listen 80
Listen 8080 可以自己定义

2、持久连接: 说白了就是测试
tcp连接建立后,资源获取完成不会断开连接,会继续等待请求资源
KeepAlive On|Off 如何断开
MaxKeepAliveRequests 100 数量限制
KeepAliveTimeout 15 时间限制

用telnet请求测试:
[root@MiWiFi-R1CM-srv Packages]# telnet 192.168.31.176 80
Trying 192.168.31.176...
Connected to 192.168.31.176.
Escape character is '^]'.
GET /chenedu.html HTTP/1.1 GET:是请求方法 /chenedu.html:是资源 HTTP/1.1:协议的版本
Host:192.168.31.176 默认请求的地址

HTTP/1.1 200 OK
Date: Tue, 10 Jan 2017 15:24:06 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Mon, 30 May 2016 02:23:34 GMT
ETag: "3a0243-b-53405f178500e"
Accept-Ranges: bytes
Content-Length: 11
Connection: close
Content-Type: text/html; charset=UTF-8

hello chen

3、MPM 多路处理模块
httpd-2.2的mpm不支持DSO机制 event为测试
在centos6 上想使用其他的模块的话 /etc/sysconfig/httpd 下
#HTTPD=/usr/sbin/httpd.worker | httpd.event 自己定义

/etc/httpd/conf/httpd.conf 模块
prefork MPM 预先创建
<IfModule prefork.c>
StartServers 8 预先创建的空闲子进程
MinSpareServers 5 最小空闲进程
MaxSpareServers 20 最大空闲进程
ServerLimit 256 响应用户进程的最大数量
MaxClients 256 服务器进程可以开始的最大数量
MaxRequestsPerChild 4000 限制最大的响应数量

worker MPM
<IfModule worker.c>
StartServers 4 初始启动的进程数量 (子进程)
MaxClients 300 最大连接并发数量 (线程)
MinSpareThreads 25 最少空闲线程数量
MaxSpareThreads 75 最大空闲线程数
ThreadsPerChild 25 每个子进程启动的线程
MaxRequestsPerChild 0 限制最大的响应数量 0:表示不做限制

4、DOS机制: 动态模块装载
LoadModule foo_module modules/mod_foo.so foo_modile 是文件

5、Main server 主服务器
如何定义一个主机:
有两种方法:
1、编辑/etc/hosts下添加:
192.168.148.122 www.chenedu.com 我的本机ip地址 名称可自己定义
2、直接编辑主配置文件/etc/httpd/conf/httpd.conf 添加:
ServerName www.cheneduo.com

6、站点资源访问的路径: 和上面5 一样的
vim /var/www/html/index.html
<h1>index.html chenedu.com</h1>
可用用浏览器访问自己的ip地址 即可

也可以自己创建一个目录路径: 在更改一下DocumentRoot 的资源访问路径 路径是你创建的目录路径;

目录中的常用指令:
(1) Options:用于定义资源的展示方式;后跟以空白字符分隔的“选项”列表;
Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews None All
Indexes:允许索引;
FollowSymLinks:允许跟踪符号链接;
SymLinksifOwnerMatch:允许
ExecCGI:允许执行CGI脚本;

(2) AllowOverride None 一般不启动

(3) order和allow/deny from 设置访问允许、限制网段
IP地址的访问控制;
示列:
Allow from 192.168.148.121 仅允许192.168.148.121 的主机访问

order用于定义allow和deny的生效次序;
allow from IP/NETWORK/FQDN   
deny from IP/NETWORK/FQDN  网络 域名
请求遵循最佳匹配法则机制
order  allow deny

7、定义站点主页面
DirectoryIndex index.html index.html.var 从左边开始搜索

8、定义路径别名
alias

9、日志
错误日志:ErrorLog
ErrorLog logs/error_log /var/log/httpd/error_log
访问日志:
LogFormat:定义日志信息的格式
CustomLog:指明日志文件路径和日志格式
格式:
%h Remote host 远程主机
%l Remote logname (from identd, if supplied) 用户登录使用的用户名
%u Remote user (from auth; may be bogus if return status (%s) is 401) 用户名
%t Time the request was received (standard english format) 服务器收到的请求时的时间
%r First line of request 请求报文的首行 起始行
%s Status. For requests that got internally redirected, this is the status of the original request --- %>s for the last. 记录服务器在收到请求之后 根据客户端的请求反映的状态码
%b Size of response in bytes, excluding HTTP headers 响应报文的大小 单位是字节
%i The contents of Foobar: header line(s) in the request sent to the server 请求报文的某个特定守护的值

10、用户的访问控制:

http协议的认证
认证质询:
WWW-Authenticate:响应码为401,拒绝客户端请求,说明要求客户端提供账号和密码
认证:
Authorization:客户端填入账号和密码后再次发送请求报文;认证通过后,服务端发送响应资源

虚拟的帐号:访问服务的帐号和密码
LoadModule

认证的方式:
basic 明文
digest 消息摘要认证

vim /var/www/html/admin/admin.html   创建/admin/admin.html 
 <h1>admin root</h1>
主页面是:/var/www/html/index.html
index.html chenedu.com

下面basic认证 当访问admin下的admin.html
编辑/etc/httpd/conf/httpd.conf 下创建一个安全域
<Directory "/var/www/html/admin"> Directory /var/www/html/admin 网站服务访问的路径:
Options None
AllowOverride None
AuthType basic 认证的类型
AuthName "For Administrators"
Authuserfile "/etc/httpd/conf/.httpdpasswd" 用户的密码、账户的文件
Require valid-user 允许那些人登录
</Directory>

创建帐号文件:
 htpasswd -c -m /etc/httpd/conf/.httpdpasswd chen   创建chen 用户
 New password: 
 Re-type new password: 

service httpd reload   重读一下
现在可以用浏览器 测试了

要是组的帐号进行认证的话该怎么做呢?
一、先创建一个安全域
vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/admin">
Options None
AllowOverride None
AuthType basic
AuthName "For Administrators"
Authuserfile "/etc/httpd/conf/.httpdpasswd"
Authgroupfile "/etc/httpd/conf/.httpdgroup" 创建组的用户、密码等 文件 可自己定义
Require group groups 允许组中的用户访问
</Directory>

二、创建组的用户和目录 可自己定义
vim /etc/httpd/conf/.httpd.group
groups: user1 user2

htpasswd -m /etc/httpd/conf/.httpdpasswd user1
htpasswd -m /etc/httpd/conf/.httpdpasswd user2

service httpd reload 重读一下即可 下面就可以测试

htpasswd
-c:创建文件;
-m:md5加密密码;
-s: SHA加密密码;
-D:删除指定用户

12、虚拟主机
站点标示:
ip相同,端口不同
ip不同,端口相同
FQDN不同
虚拟主机的三种实现方法:
ip的虚拟主机
每个虚拟主机使用独有的ip地址

创建一个基于ip地址的虚拟主机
一、先创建ip地址:
ip addr add 192.168.148.100/16 dev eth0
inet 192.168.148.122/24 brd 192.168.148.255 scope global eth0
inet 192.168.148.100/32 scope global eth0

二、创建虚拟主机
可以参考/etc/httpd/conf/httpd.conf 最下面虚拟主机的配置
<VirtualHost *:80>

ServerAdmin webmaster@dummy-host.example.com

DocumentRoot /www/docs/dummy-host.example.com

ServerName dummy-host.example.com

ErrorLog logs/dummy-host.example.com-error_log

CustomLog logs/dummy-host.example.com-access_log common

#</VirtualHost>

手动创建二个基于ip的虚拟主机:
第一个ip 地址 192.168.148.122
vim /etc/httpd/conf.d/vhost1.conf 可以自己定义的
<VirtualHost 192.168.148.122:80> 基于ip的地址
ServerName www1.chenedu.com 名称
DocumentRoot /var/www/html/www1 网络服务网页

</VirtualHost>
第二个ip 地址 192.168.148.100
vim /etc/httpd/conf.d/vhost2.conf
<VirtualHost 192.168.148.100:80>
ServerName www2.chenedu.com
DocumentRoot /var/www/html/www2
</VirtualHost>

三、去创建网络测试网页
mkdir -pv /var/www/html/www{1,2}
mkdir: created directory /var/www/html/www1'<br/>mkdir: created directory/var/www/html/www2'

vim /var/www/html/www1/index.html
<h1>www1.chenedu.com</h1>

vim /var/www/html/www2/index.html
<h1>www2.chenedu.com</h1>

做完之后必须要检测一下:
[root@chenedu ~]# httpd -t
Syntax OK

service httpd reload 重读一下
下面可以用浏览器测试 :

端口(PORT)的虚拟主机:
每个虚拟主机使用一个独有的端口(PORT)
创建基于端口的虚拟主机:
第一个不用修改
vim /etc/httpd/conf.d/vhost2.conf
<VirtualHost 192.168.148.122:8080> 改成原来的ip地址 8080 端口 可自己到/etc/httpd/conf/httpd.conf 定义端口 Listen 8080
ServerName www2.chenedu.com
DocumentRoot /var/www/html/www2
</VirtualHost>

httpd -t 检测
service httpd reload 重读

域名(FQDN)的虚拟主机:
每个虚拟主机使用一个独有的域名(FQDN)
注意:虚拟主机和主服务器 不能同时使用

创建基于域名的虚拟主机:
现将/etc/httpd/conf/httpd.conf 下的NameVirtualHost *:80 打开 它默认是注释 的
NameVirtualHost 192.168.148.122:80 当前本机的ip地址

vim /etc/httpd/conf.d/vhost1.conf
VirtualHost 192.168.148.122:80> 基于ip的地址
ServerName www1.chenedu.com 名称
DocumentRoot /var/www/html/www1 网络服务网页
CustomLog logs/www1-access_log combined 访问的日志 在 /var/log/httpd
</VirtualHost>

vim /etc/httpd/conf.d/vhost2.conf
<VirtualHost 192.168.148.122:80>
ServerName www2.chenedu.com
DocumentRoot /var/www/html/www2
CustomLog logs/www2-access_log combined 访问的日志
</VirtualHost>

vim /etc/hosts
192.168.148.122 www1.chenedu.com www2.chenedu.com 其实可以在DNS下解析 就不用在这里解析了
测试:
[root@chenedu ~]# curl http://www1.chenedu.com
<h1>www1.chenedu.com</h1>
[root@chenedu ~]# curl http://www2.chenedu.com
<h1>www2.chenedu.com</h1>
[root@chenedu ~]# curl http://192.168.148.122
<h1>www1.chenedu.com</h1>

httpd:
url:资源统一定位符
服务器地址:端口+ip地址

基本语法格式:
params:参数
http://www.chenedu.com/admin/admin.php;useranme=admin
query:查询
http://www.magedu.com/admin/admin.php?logintime=10/12/2017
frag:
http://www.chenedu.com/admin/redme.html#ch1

httpd协议报文格式:
method:请求方法,客户端希望服务器对资源执行的动作
GET:从服务器获取一个资源

    HEAD:仅从服务器获取资源响应的报文的首部

    POST:向服务器提交表单 表单就是把表单中的数据发送给服务器

status :响应状态码 
    请求处理过程的结果状态

    显示的结果提示:
    1xx 100-101:信息提示
    2xx 200-206:成功类的响应码 如200
    3xx 300-305:重定向类的响应码  如301, 302, 304...
    4xx 400-415:错误类信息客户端错误  如 401, 404, 403...
    5xx 500-505:服务器端错误  如500,502...

headers:请求响应报文的首部
    首部分类:
      通用首部:请求、响应报文都可以使用

      请求首部
      响应首部
      实体首部
      扩展首部

httpd-2.2 基本配置:
一、status 页面 启用 status 页面
vim /etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.worker 将它注释掉 默认是注释掉
service httpd restart 重启

vim /etc/httpd/conf/httpd.conf  默认是注释掉的
    <Location /server-status>
        SetHandler server-status    内部插件 启用
        Order deny,allow        
        Deny from all   
        Allow from 192.168    
    </Location>
httpd -t 检测语法

service httpd reload 重读

用浏览器 访问本机的ip地址
192.168.148.122/server-status 会显示一下信息
Apache Server Status for 192.168.148.122

Server Version: Apache/2.2.15 (Unix) DAV/2
Server Built: Jul 24 2015 11:52:28
Current Time: Friday, 13-Jan-2017 19:06:16 CST
Restart Time: Wednesday, 01-Jun-2016 22:45:02 CST
Parent Server Generation: 1
Server uptime: 225 days 20 hours 21 minutes 14 seconds
1 requests currently being processed, 7 idle workers
_W______........................................................
................................................................
................................................................
................................................................
Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process

PID Key: 
   5056 in state: _ ,   5057 in state: W ,   5058 in state: _ 
   5059 in state: _ ,   5060 in state: _ ,   5061 in state: _ 
   5062 in state: _ ,   5063 in state: _ ,
To obtain a full report with current status information you need to use the ExtendedStatus On directive.

启动 /etc/httpd/conf/httpd.conf
 ExtendedStatus On  将注释# 去掉 
 service httpd reload
重新刷新一下页面就多出更多的信息

二、user/group

指定用户的身份运行httpd服务进程;
User apache
Group apache
可以用
ps aux  查看

三、mod_deflate模块压缩页面优化传输速度
适用场景:
1、节约带宽,额外消耗CPU;同时,可能有些较老浏览器不支持
2、压缩适于压缩的资源,例如文件文件

https:
SSL会话的简化过程
(1) 客户端发送可供选择的加密方式,并向服务器请求证书;
(2) 服务器端发送证书以及选定的加密方式给客户端;
(3) 客户端取得证书并进行证书验正:
如果信任给其发证书的CA:
(a) 验正证书来源的合法性;用CA的公钥解密证书上数字签名;
(b) 验正证书的内容的合法性:完整性验正
(c) 检查证书的有效期限;
(d) 检查证书是否被吊销;
(e) 证书中拥有者的名字,与访问的目标主机要一致;
(4) 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密钥交换;
(5) 服务用此密钥加密用户请求的资源,响应给客户端;

注意:SSL会话是基于IP地址创建;所以单IP的主机上,仅可以使用一个https虚拟主机;

创建一个私有CA认证 在为服务端申请证书
192.168.148.121 当CA centos 7

一、先创建一个私有CA
cd /etc/pki/CA/ 先切到这个目录下创建

[root@localhost CA]# (umask 077; openssl genrsa -out private/cakey.pem 2048)
Generating RSA private key, 2048 bit long modulus
...............+++
.........+++
e is 65537 (0x10001)

在生成一个自签证书
[root@localhost CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem
Country Name (2 letter code) [XX]:CN 国家
State or Province Name (full name) []:Shanghai 省的名字
Locality Name (eg, city) [Default City]:Shanghai 地方
Organization Name (eg, company) [Default Company Ltd]:ChenEdu 组织名
Organizational Unit Name (eg, section) []:Ops 组织单位名称
Common Name (eg, your name or your server's hostname) []:ca.chenedu.com
Email Address []:ca@chenedu.com 邮箱

在多创建两个文件 自己定义
touch index.txt
echo 01 > serial
私有CA 已创建完成

二、为服务端申请证书:
192.168.148.122 centos 6
centos 6 上面默认是没有mod_ssl 模块
yum -y install mod_sll 安装mod_sll
下面先创建一个私钥文件
mkdir /etc/httpd/ssl
在ssl下创建私钥
[root@www1 ssl]# (umask 077; openssl genrsa -out httpd.key 1024)
Generating RSA private key, 1024 bit long modulus
...++++++
...++++++
e is 65537 (0x10001)
注意:httpd.key的权限 最好是600

在生成签署请求
[root@www1 ssl]# openssl req -new -key httpd.key -out httpd.csr
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Shanghai
Locality Name (eg, city) [Default City]:Shanghai
Organization Name (eg, company) [Default Company Ltd]:ChenEdu
Organizational Unit Name (eg, section) []:Ops
Common Name (eg, your name or your server's hostname) []:www1.chenedu.com
Email Address []:www1@chenedu.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

[root@www1 ssl]# scp httpd.csr 192.168.148.121:/tmp 将httpd.csr 复制到192.168.148.121 的tpm目录下 进行签署

在centos 7上:openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt 两个y 就签署成功了

在/etc/pki/CA/newcerts/ 会生成签署的文件名为 01.pem

再将文件复制回:scp certs/httpd.crt 192.168.148.122:/etc/httpd/ssl/ centos 6

vim /etc/httpd/conf.d/ssl.conf 启用的配置文件
<VirtualHost default:443> 在下面的两行
DocumentRoot "/var/www/html/www1" 路径要用配置的虚拟主机上
ServerName www1.chenedu.com:443 虚拟主机的名称及端口

Server Certificate: 服务器证书文件

Point SSLCertificateFile at a PEM encoded certificate. If

the certificate is encrypted, then you will be prompted for a

pass phrase. Note that a kill -HUP will prompt again. A new

certificate can be generated using the genkey(1) command.

SSLCertificateFile /etc/httpd/ssl/httpd.crt 创建证书的摆放路径

Server Private Key: 服务器的私钥文件

If the key is not combined with the certificate, use this

directive to point at the key file. Keep in mind that if

you've both a RSA and a DSA private key you can configure

both in parallel (to also allow the use of DSA ciphers, etc.)

SSLCertificateKeyFile /etc/httpd/ssl/httpd.key 创建私钥的摆放路径

在改完之后 :httpd -t 检测语法
service httpd reload

ss -tnl 查看端口 443 是否启用
下面测试即可;

用ab工具对httpd进行压力测试:
ab
-n 总请求数
-c 模拟的并发数
-k 以持久连接模式 测试

上线之前做压测 线上是绝对不能压测的

httpd-2.4特性 centso 7
(1) MPM支持DSO机制,以模块方式加载;
(2) event MPM生产可用;
(3) 异步读写机制;
(4) 支持每模块及每目录单独日志级别定义;
(5) 每请求相关的专用配置;
(6) 增强版的表达式分析器;
(7) 毫秒级的持久连接时长;
(8) 基于FQDN的虚拟主机不再需要专门的指令NameVirtualHost;
(9) 支持用户自定义变量;
(10) 更低内在的开销;

新模块:
(1) mod_proxy_fcgi
(2) mod_proxy_scgi
(3) mod_remoteip

安装centos 7的httpd
yum -y install httpd

主配置文件:
/etc/httpd/conf/httpd.conf
模块配置文件:
/etc/httpd/conf.modules.d/.conf
分段配置文件:
/etc/httpd/conf.d/
.conf

选择MPM 时用不同的模块时
在/etc/httpd/conf.modules.d/00-mpm.conf 下选择模块

2、基于ip地址的访问时:
和centos6 httpd-2.2 一样 不过不支持allow deny. . .
允许所有主机访问 Require all granted
拒绝所有主机访问 Require all denied

vim /vat/www/html/index.html   测试页面
<h1>Centos 7 httpd-2.4</h1>

如何拒绝物理主机的访问
vim /etc/httpd/conf/httpd.conf
<RequireAll>
Require all granted
Require not ip 192.168.148.122 拒绝 192.168.148.122 这个主机访问
</RequireAll>

httpd -t 检测
systemctl reload httpd.service

在192.168.148.122 centos 6 的主机上可以测试
[root@www1 ~]# curl http://192.168.148.121/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.</p>
</body></html>

3、创建虚拟主机
FQDN的虚拟主机不再需要专门的指令NameVirtualHost;

vim /etc/httpd/conf.d/www1.conf 创建www1 的虚拟主机
<VirtualHost *:80>
ServerName www1.chenedu.com
DocumentRoot /var/www/html/www1
<Directory "/var/www/html/www1">
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

vim /etc/httpd/conf.d/www2.conf 创建www2 的虚拟主机
<VirtualHost *:80>
ServerName www2.chenedu.com
DocumentRoot /var/www/html/www2
<Directory "/var/www/html/www2">
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

mkdir -pv /var/www/html/www{1,2}

vim /var/www/html/www1/index.html 创建网站测试www1
<h1>www1.chenedu.com</h1>

vim /var/www/html/www1/index.html 创建网站测试www2
<h1>www2.chenedu.com</h1>

4、毫秒级长连接
KeepAlive
vim /etc/httpd/conf.d/keepalive 创建时间连接
KeepAlive On
KeepAliveTimeout 300ms 请求超时
MaxKeepAliveRequests 100 最大的请求数

httpd -t 检测

systemctl reload httpd

5、https
和httpd-2.2 一样一样的

转载于:https://blog.51cto.com/001230/2128438

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值