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

相关推荐

  • 运维必备技能之磁盘管理

    磁盘分区的三个工具 1、fdisk交互式工具         fdisk /dev/sdb进入交互界面         交互式界面的几个常用命令        …

    Linux干货 2017-03-14
  • 第1周作业

    第一周作业   1、描述计算机的组成及其功能。 计算机由运算器,控制器,存储器,输入装置和输出装置五大部件组成计算机 运算器,控制器:CPU 存储器:内存和硬盘 输入装置和输出装置:键鼠和显示器   2、按系列罗列Linux的发行版本,并描述不同版本的联系和区别。   linux的发行版本大致分为两大类,一类是商业公司维护的发行…

    Linux干货 2017-08-24
  • Linux简单的磁盘分区、格式化和挂载

     一.分区: 1.查看分区fdisk -l 通过fdisk -l 查看机器所挂硬盘个数及分区情况   2.通过上面的信息,我们知道此机器中挂载两个硬盘分别是:/dev/sda和/dev/sdb, 其中sda有两个主分区/dev/sda1和sda2; 其中sdb有1个扩展类型/dev/sdb3和3个逻辑分区sd…

    Linux干货 2016-02-28
  • Linux中的shell脚本编程——基础篇

    概述:       shell脚本在Linux系统管理员的运维工作中非常重要。shell脚本能够帮助我们很方便的管理服务器,因为我们可以指定一个任务计划,定时的去执行某一个脚本以满足我们的需求。本篇将从编程基础、脚本基本格式、变量、运算、条件测试这几个方面详细介绍shell脚本编程的基础内容,也是我们必须要掌握熟练的内容。 一、…

    Linux干货 2016-08-15
  • CentOS通过bind配置DNS服务器

    一、创建DNS主服务器 1、安装bind并配置主配置文件     主服务器为CentOS 7,主服务地址为172.16.11.55     安装bind [root@xinfeng ~]# yum install bind  &n…

    Linux干货 2016-04-18
  • N26-第十二周

    1、请描述一次完整的http请求处理过程;        1、建立或处理链接:接收请求或拒绝请求        2、接收请求:接收来自于网络的请求报文中对某资源的一次请求的过程;接收请求的方式通常是并发访问响应模型        3、处理请…

    2017-05-14

评论列表(2条)

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

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