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

相关推荐

评论列表(2条)

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

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