httpd配置

1、Centos7系统下实现httpd-2.2的安装,并分别实现prefork、worker、event等几种工作方式

2、简述request报文请求方法和状态响应码

3、详细描述httpd虚拟主机、站点访问控制、基于用户的访问控制、持久链接等应用配置实例

1、Centos7系统下实现httpd-2.2的安装,并分别实现prefork、worker、event等几种工作方式

编译安装httpd-2.2.32.tar.gz

yum groupinstall -y “Development Tools”

tar xf httpd-2.2.32.tar.gz

mkdir /usr/local/httpd

cd httpd-2.2.32

./configure –prefix=/usr/local/httpd –with-mpm=prefork

//可以在编译时通过–with-mpm选项来指定httpd的工作模式。可以设置的工作模式有prefork、worker、event。其中,默认为prefork模式,不用此选项就会工作在此模式下。

注:MPM:Multipath processing Modules (多路处理模块)

  • prefork:多进程模型,每个进程响应一个请求;一个主进程负责生成子进程及回收子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理;n个子进程每个子进程处理一个请求;工作模型是会预先生成几个空闲进程,随时等待用于响应用户请求;最大空闲和最小空闲;
  • worker:多进程多线程模型,每线程处理一个用户请求;一个主进程负责生成子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理;多个子进程每个子进程负责生成多个线程;每个线程负责响应用户请求;并发响应数量:m*n,m表示子进程数量,n表示每个子进程所能创建的最大线程数量;
  • event:事件驱动模型,多进程模型,每个进程响应多个请求;一个主进程负责生成子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理;子进程基于事件驱动机制直接响应多个请求;

2、简述request报文请求方法和状态响应码

  • request报文语法格式:

<method> <request-URL> <version>

<HEADERS>

  • method(方法):

GET:从服务器获取一个资源;

HEAD:只从服务器获取文档的响应首部;

POST:向服务器发送要处理的数据;

PUT:将请求的主体部分存储在服务器上;

DELETE:请求删除服务器上指定的文档;

TRACE:追踪请求到达服务器中间经过的代理服务器;

OPTIONS:请求服务器返回对指定资源支持使用的请求方法;

  • status(状态码):

1xx:100-101, 信息提示;

2xx:200-206, 成功

3xx:300-305, 重定向

4xx:400-415, 错误类信息,客户端错误

5xx:500-505, 错误类信息,服务器端错误

  • 常用的状态码:

200: 成功,请求的所有数据通过响应报文的entity-body部分发送;OK

301: 请求的URL指向的资源已经被删除;但在响应报文中通过首部Location指明了资源现在所处的新位置;Moved Permanently

302: 与301相似,但在响应报文中通过Location指明资源现在所处临时新位置; Found

304: 客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端;Not Modified

401: 需要输入账号和密码认证方能访问资源;Unauthorized

403: 请求被禁止;Forbidden

404: 服务器无法找到客户端请求的资源;Not Found

500: 服务器内部错误;Internal Server Error

502: 代理服务器从后端服务器收到了一条伪响应;Bad Gateway

3、详细描述httpd虚拟主机、站点访问控制、基于用户的访问控制、持久链接等应用配置实例

注:这里基于CentOS7的httpd2.4版本rpm包进行安装配置

  • httpd虚拟主机配置

虚拟主机可以基于IP、端口、FQDN三种方式进行工作

基于IP

mkdir -pv /data/www/html/{ilinux,iunix}

vim /data/www/html/ilinux/index.html

ilinux Test Page

vim /data/www/html/iunix/index.html

iunix Test Page

ip addr add 192.168.1.114/24 dev eno16777736

ip addr list

//现在主机有两个IP地址,一个是192.168.1.113,一个是192.168.1.114

vim /etc/httpd/conf.d/vhosts.conf

<VirtualHost 192.168.1.113:80>

ServerName www.ilinux.com

DocumentRoot /data/www/html/ilinux

<Directory “/data/www/html/ilinux”>

Options none

AllowOverride none

Require all granted

</Directory>

CustomLog logs/ilinux_access_log combined

ErrorLog logs/iinux_error_log

</VirtualHost>

<VirtualHost 192.168.1.114:80>

ServerName www.iunix.com

DocumentRoot “/data/www/html/iunix”

<Directory “/data/www/html/iunix”>

Options none

AllowOverride none

Require all granted

</Directory>

CustomLog logs/iunix_access_log combined

ErrorLog logs/iunix_error_log

</VirtualHost>

基于端口

vim /etc/httpd/conf.d/vhosts.conf

Listen 8080

<VirtualHost 192.168.1.113:80>

ServerName www.ilinux.com

DocumentRoot /data/www/html/ilinux

<Directory “/data/www/html/ilinux”>

Options none

AllowOverride none

Require all granted

</Directory>

CustomLog logs/ilinux_access_log combined

ErrorLog logs/iinux_error_log

</VirtualHost>

<VirtualHost 192.168.1.113:8080>

ServerName www.iunix.com

DocumentRoot “/data/www/html/iunix”

<Directory “/data/www/html/iunix”>

Options none

AllowOverride none

Require all granted

</Directory>

CustomLog logs/iunix_access_log combined

ErrorLog logs/iunix_error_log

</VirtualHost>

基于FQDN

vim /etc/httpd/conf.d/vhosts.conf

<VirtualHost 192.168.1.113:80>

ServerName www.ilinux.com

DocumentRoot /data/www/html/ilinux

<Directory “/data/www/html/ilinux”>

Options none

AllowOverride none

Require all granted

</Directory>

CustomLog logs/ilinux_access_log combined

ErrorLog logs/iinux_error_log

</VirtualHost>

<VirtualHost 192.168.1.113:80>

ServerName www.iunix.com

DocumentRoot “/data/www/html/iunix”

<Directory “/data/www/html/iunix”>

Options none

AllowOverride none

Require all granted

</Directory>

CustomLog logs/iunix_access_log combined

ErrorLog logs/iunix_error_log

</VirtualHost>

  • 站点访问控制

vim /etc/httpd/conf/httpd.conf

DocumentRoot “/data/web/www”

<Directory “/data/web/www”>

Require all granted //允许所有人访问

</Directory>

systemctl restart httpd


vim /etc/httpd/conf/httpd.conf

<Directory “/data/web/www”>

<Requireall>

Require not ip 192.168.1.107 //拒绝一个地址访问

Require ip 192.168 //允许网段访问

</Requireall> </Directory>

httpd -t

systemctl restart httpd

  • 基于用户的访问控制

htpasswd -c /tmp/test.users tom

//生成一个用户名叫tom的加密文件叫test.users,文件中用冒号隔开了用户名和密码。这条命令输入后还加输入两次密码。只有第一次创建文件时才用-c选项。

htpasswd /tmp/test.users jerry

//再在test.users文件中加一个叫jerry的用户,也可以用-m选项,表示md5

htpasswd -b /tmptest.users obama 123456

//用-b选项指明添加用户名叫obama,密码是123456

mv /tmp/test.users /etc/httpd/conf.d/.htpasswd

mkdir /data/web/www/admin

vim /data/web/www/admin/index.html

Admin Area

访问IP/admin

vim /etc/httpd/conf.d/admin.conf

<Directory “/data/web/www”>

Options None

AllowOverride None

AuthType basic

AuthName “Admin Area,Please enter username and password”

AuthUserFile “/etc/httpd/conf.d/.htpasswd”

Require user jerry obama

//这里如果改为Require valid-user表示所有用户都可登录。2.2与2.4版本在这里一样,都用Require user选项。

</Directory>

httpd -t

systemctl restart httpd

访问IP/admin,需要认证了

vim /etc/httpd/conf.d/.htgroup //这次用组的方式登录

animals: tom jerry

//创建一个组,名称叫animals,用户有tom和jerry。这个用户一定要是创建过的账号

vim /etc/httpd/conf.d/admin.conf

<Directory “/data/web/www/admin”>

Options None

AllowOverride None

AuthType basic

AuthName “Admin Area,Please enter username and password”

AuthUserFile “/etc/httpd/conf.d/.htpasswd”

AuthGroupFile “/etc/httpd/conf.d/.htgroup”

Require group animals

</Directory>

  • 持久链接

vim /etc/httpd/conf.d/keepalive.conf

KeepAlive On

KeepAliveTimeout 30

MaxKeepAliveRequests 100

vim /var/www/html/index.html

CentOS7 Test Page

systemctl start httpd

telnet 192.168.1.15 80

GET /index.html HTTP/1.1

Host: 192.168.1.15

//可以通过telnet命令进行测试,如果未开启持久连接功能,当请求完资源后,会立即退出。而将开启持久连接时,会按照配置文件设置,到边超时时间或大于请求数量时才会退出。

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/91455

(0)
ruopu1989ruopu1989
上一篇 2018-02-05 10:52
下一篇 2018-02-06 13:04

相关推荐

  • LAMP

    备注:本次安装是采用的系统自带的yum源进行安装的 第一步:安装Apache 1:安装apache,命令如下: yum install -y httpd   2:修改httpd.conf,修改ServerName的域名,具体步骤如下: 使用vi编辑器打开apache配置文件,命令如下: vi /etc/httpd/conf/httpd.conf 按…

    Linux干货 2017-10-09
  • bash脚本之数组及字符串切片,登陆配置文件

    一,概述 数组(就是一堆变量的集合) 变量:存储单个元素的内存空间 数组:存储多个元素的连续的内存空间,相当于多个变量的集合/ 数组名和索引     索引:编号从0开始,属于数值索引     注意:索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash4.0版本之后…

    Linux干货 2016-09-01
  • sed简介及常见用法

    sed是一个文本流处理器,配合正则表达式用可以实现很多文本处理操作。 和grep一样,sed是一行一行的处理的。sed处理文本时,首先会将源文件复制一份到内存中,然后将文本一行一行拿到模式空间内进行操作,最后输出到标准输出,即屏幕上。 在模式空间中,每一行都会根据用户给的条件进行匹配,匹配到了进行编辑后输出,没有匹配到,直接输出到标准输出。sed除了模式空间…

    2018-01-04
  • ELK 日志分析实例

    网海过客www.chinasa.net ELK 日志分析实例一、ELK-web日志分析二、ELK-MySQL 慢查询日志分析三、ELK-SSH登陆日志分析四、ELK-vsftpd 日志分析 一、ELK-web日志分析 通过logstash grok正则将web日志过滤出来,输出到Elasticsearch 搜索引擎里,通过Kibana前端展示。  …

    Linux干货 2016-06-03
  • 高级文件系统管理的相关理解

    1.RAID是什么     RAID:Redundant Arrays of Inexpensive Disks,是指由多个磁盘合成一个阵列,来提供更好的性能,冗余或者两者都提供。在生产生活中,通常一个硬盘往往不能满足我们的存储需要,这是就需要通过RAID磁盘阵列来对磁盘进行“扩容”,来满足我们的日常需要,相比较于单一…

    Linux干货 2016-08-30
  • Week 1 计算机组成

    I. 引 Introduction     在学习计算机技术之前,了解计算机的组成是非常必要的。这不仅可以让你对硬件有一个大概的了解,而且会让你将来对基于硬件运行的软件有一个更为透彻的理解。只有理解了计算机是如何协调它的部件来工作的才方能理解人们为何这样设计操作系统和程序。 I. 计算机部件 The Essential…

    Linux干货 2016-06-11

评论列表(2条)

  • 马哥教育
    马哥教育 2018-02-05 22:26

    总结的比较全面,如果能加上实战部分,会更好一点~加油~