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

相关推荐

  • shell的变量功能

                                                      &nbsp…

    2017-08-05
  • 第一周作业-01

    计算机组成    硬件:主要由5大部件组成,CPU包含运算器和控制器两大部件        CPU:运算器、控制器、寄存器、缓存        存储器:内存,RAM(Random Access Memory)    , Memory只支持平…

    Linux干货 2016-09-10
  • keepalived+lvs 实现站点高可用

    lvs实现负载均衡
    keepalived 解决 director单点和realserver监控检测

    2017-12-13
  • Shell脚本中select、函数总结

    描述: select控制语句基于Korn Shell中的控制结构 select语句首先显示一个菜单,然后根据用户的选择给变量赋予相应的值,最后执行一系列命令。 语法: select varname [ in arg…] do    commands done 说明: select结构显示arg项的菜单。加入忽略关键字in和参数…

    Linux干货 2016-08-24
  • Find命令的使用

    Find命令的基本用法 在Linux系统中find命令是一个强大文件查找类工具,它支持根据文件名,权限,文件大小,访问以及修改时间查找,使用方法如下: find [option] [查找起始路径] [查找条件] [处理动作] 起始路径:指定查找文件或目录的路径,默认为当前目录 查找条件:可根据文件名,权限,文件大小以及从属关系查找文件 处理动作:动查找到的文…

    Linux干货 2017-08-28
  • 认识DNS

    DNS全称是Domain Name System的简称,即域名系统。因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP/TCP协议之上,使用端口号53。 认识DNS 安装 创建一台DN…

    Linux干货 2016-12-07

评论列表(2条)

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

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