分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

Linux自学笔记——httpd2.2基础配置

发布时间:2023-09-06 01:22责任编辑:苏小强关键词:配置httpLinux


http服务器程序:

httpd(apache)

nginx

lighttpd

应用程序服务器:

IIS:.net

tomcat:.jsp

可访问网址:www.netcraft.com

httpd的安装和使用:

ASF:apache software foundation

httpd:apache

a patchy server =apache

httpd的特性:

高度模块化:core + modules

DSO:dynamic shared object

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

prefork:多进程模型,每个进程响应一个请求;

一个主进程:负责生成子进程及回收子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理;

N个子进程:每个子进程处理一个请求;

工作模型:会预先生成几个空闲进程,随时等待用于响应用户请求;最大空闲和最小空闲;

Worker:多进程多线程模型,每线程处理一个用户请求;

一个主进程:负责生成子进程;负责创建套接字;负责接受请求,并将其派发给某子进程进行处理;

多个子进程:每个子进程负责生成多个线程;

每个线程:负责响应用户请求;

并发响应数量:m*n

m:子进程数量

n:每个子进程所能创建的最大线程数量;

event:时间驱动模型,多进程模型,每个进程响应多个请求;

一个主进程:负责生成子进程;负责创建套接字;负责接受请求,并将其派发给某子进程进行处理;

子进程:基于时间驱动机制直接响应多个请求;

httpd的程序版本;http://httpd.apache.org/

httpd 1.3:官方已经停止维护;

httpd 2.0:

httpd 2.2:一本centos6上httpd预装版本;

httpd 2.4:目前最新稳定版;

httpd的功能特性:

CGI:common gateway interface

虚拟主机:IP,PORT,FQDN

反向代理

负载均衡

路径别名

丰富的用户认证机制

basic

digest

支持第三方模块

……

安装httpd:

Rpm包:centos发行版中直接提供;

编译安装:定制新功能,或其他原因;

Centos6:httpd2.2

程序环境:

配置文件:

/etc/httpd/conf/httpd.conf

650) this.width=650;" src="https://s4.51cto.com/oss/201711/02/5498f0b6077cc4860a78cea1634de8e8.png-wh_500x0-wm_3-wmp_4-s_727893854.png" title="1.png" alt="5498f0b6077cc4860a78cea1634de8e8.png-wh_" />

/etc/httpd/conf.d/*.conf

650) this.width=650;" src="https://s5.51cto.com/oss/201711/02/241b6df3e5b487a8ce729e18c38d002c.png-wh_500x0-wm_3-wmp_4-s_614470642.png" title="2.png" alt="241b6df3e5b487a8ce729e18c38d002c.png-wh_" />

服务脚本:

/etc/rc.d/init.d/httpd

主程序文件:

/usr/sbin/httpd

/usr/sbin/httpd.event

/usr/sbin/httpd.worker

日志文件:

/var/log/httpd:

access_log:访问日志

error_log:错误日志

站点文档:

/var/www/html

模块文件路径:

/usr/lib64/httpd/modules

服务控制和启动:

chkconfig httpd on|off

service {start|stop|restart|status|configtest|reload}httpd

centos7:httpd2.4

程序环境:

配置文件:

/etc/httpd/conf/httpd.conf

/etc/httpd/conf.d/*.conf

模块相关的配置文件:/etc/httpd/conf.modules.d/*.conf

systemd unit file:

/usr/lib/systemd/system/httpd.service

主程序文件:

/usr/sbin/httpd

httpd-2.4支持MPM的动态切换;

日志文件:

/var/log/httpd:

access_log:访问日志

error_log:错误日志

站点文档:

/var/www/html

模块文件路径:

/usr/lib64/httpd/modules

服务控制:

systemctl enable|disable httpd.service

systemctl {start|stop|restart|status} httpd.service

httpd-2.2的常用配置

主配置文件:/etc/httpd/conf/httpd.conf

### Section 1:Global Encronment(全局环境变量)

### Section 2:“Main”server configuration

### Section 3:Virtual Hosts;

配置格式:

directive value

directive:不区分字符大小写;

value:为路径时,是否区分大小写,取决于文件系统;

常用配置:

1.修改监听的IP和PORT;

Listen[IP:]PORT

1)省略IP表示为0.0.0.0;

2)Listen指令可重复出现多次;

Listen 80

Listen 8080

3)修改监听socket,重启服务进程方可生效;

650) this.width=650;" src="https://s2.51cto.com/oss/201711/02/9fc8b53a5a7d408c753211a98b2fcb30.png-wh_500x0-wm_3-wmp_4-s_3784183658.png" title="3.png" alt="9fc8b53a5a7d408c753211a98b2fcb30.png-wh_" />

2.持久连续

PersistentConnection:tcp连续建立后,每个资源获取完成后不全断开连接,而是继续等待其它的资源请求的进行;

如何断开?

数量限制;

时间限制

副作用:对并发访问量较大的服务器,长连接机制会使得后续某些请求无法得到正常的响应;

折中:使用较短的持久连接时长,以及较少的请求数量;

KeepAliveOn|Off

KeepAliveTimeout 15

MaxKeepAliveRequests 100

650) this.width=650;" src="https://s1.51cto.com/oss/201711/02/06fd23bbd46a4ff27267857700583878.png-wh_500x0-wm_3-wmp_4-s_3898293786.png" title="4.png" alt="06fd23bbd46a4ff27267857700583878.png-wh_" />

测试:

telnet WEB_SERVER_IP PORT

GET/URL HTTP/1.1

Host:WEB_SERVER_IP

650) this.width=650;" src="https://s2.51cto.com/oss/201711/02/e7cced8514f1ab075adb2ead10c6989e.png-wh_500x0-wm_3-wmp_4-s_965051896.png" title="5.png" alt="e7cced8514f1ab075adb2ead10c6989e.png-wh_" />

Note:15s不请求将会自动退出;

3.MPM

httpd-2.2不支持同时编译多个MPM模块,所以只能编译选定要使用的那个;centos6的rpm包为此专门提供了三个应用程序文件,httpd(prefork),httpd.worker,httpd.event,分别用于实现不同的MPM机制的支持;确认现在使用的是哪个程序文件的方法:

ps aux | grep httpd

650) this.width=650;" src="https://s4.51cto.com/oss/201711/02/86ca731eff836c8833e7be1071194dec.png-wh_500x0-wm_3-wmp_4-s_2106948485.png" title="6.png" alt="86ca731eff836c8833e7be1071194dec.png-wh_" />

可以看出现在使用的是prefork文件。

默认使用的为/usr/sbin/httpd,其为prefork的MPM模块;

查看httpd程序的模块列表:

查看静态编译的模块:

#httpd –l

650) this.width=650;" src="https://s5.51cto.com/oss/201711/02/7c66ba7f0e7e7f3644472a52257a24aa.png-wh_500x0-wm_3-wmp_4-s_4170092967.png" title="7.png" alt="7c66ba7f0e7e7f3644472a52257a24aa.png-wh_" />

持卡看静态编译及动态编译的模块:

#httpd –M

650) this.width=650;" src="https://s1.51cto.com/oss/201711/02/e21d9a6d5387c5965f9b3e30c2b1001c.png-wh_500x0-wm_3-wmp_4-s_955222654.png" title="8.png" alt="e21d9a6d5387c5965f9b3e30c2b1001c.png-wh_" />

更换使用httpd程序,以支持其他的MPM机制:

/etc/sysconfig/httpd

HTTPD=/usr/sbin/httpd.{worker,event}

650) this.width=650;" src="https://s2.51cto.com/oss/201711/02/e02181dda85a466a19ab15108ec47590.png-wh_500x0-wm_3-wmp_4-s_2321523785.png" title="9.png" alt="e02181dda85a466a19ab15108ec47590.png-wh_" />

编辑图中红框部分,将#删掉,保存退出重启服务,进程使用了httpd.worker文件;

650) this.width=650;" src="https://s4.51cto.com/oss/201711/02/5b6194d612114a48704e65f542cde42b.png-wh_500x0-wm_3-wmp_4-s_3000231833.png" title="10.png" alt="5b6194d612114a48704e65f542cde42b.png-wh_" />

Note:必须重启服务,配置才能生效;

MPM配置:

prefork的配置:

650) this.width=650;" src="https://s1.51cto.com/oss/201711/02/5e163ed8aac5979536c46ad675b21e59.png-wh_500x0-wm_3-wmp_4-s_471402956.png" title="11.png" alt="5e163ed8aac5979536c46ad675b21e59.png-wh_" />

<IfModule prefork.c>

StartServers 8 服务启动后默认开启的进程数;

MinSpareServers 5 最小空闲服务器进程,保存备用;

MaxSpareServers 20 最大空闲服务器进程,保存备用;

ServerLimit 256 最大活动进程数,一般此项会大于并发数;

MaxClients 256 最大并发数,最大数量的工作线程;

MaxRequestsPerChild 4000 每个子进程在生命周期内所能够服务的最大请求个数;

</IfModule>

Worker的配置:

650) this.width=650;" src="https://s1.51cto.com/oss/201711/02/6e4574fc07f53406f7cdc18e75193732.png-wh_500x0-wm_3-wmp_4-s_1865456351.png" title="12.png" alt="6e4574fc07f53406f7cdc18e75193732.png-wh_" />

<IfModule worker.c>

StartServers 4 服务启动后默认开启的进程数;

MaxClients 300 最大并发数,最大数量的工作线程;

MinSpareThreads 25 最小空闲进程,保存备用;

MaxSpareThreads 75 最大空闲进程,保存备用;

ThreadsPerChild 25 每个进程可生产的线程数;

MaxRequestsPerChild 0 每个子进程在生命周期内所能够服务的最大请求个数,0代表不限制;

</IfModule>

4.DSO

配置指定实现模块加载;

LoadModule <mod_name> <mod_path>

650) this.width=650;" src="https://s1.51cto.com/oss/201711/02/b9c32e6e29522bd3e8fae52d73bbcc10.png-wh_500x0-wm_3-wmp_4-s_2439191559.png" title="13.png" alt="b9c32e6e29522bd3e8fae52d73bbcc10.png-wh_" />

模块文件路径可使用相对路径:

相对于ServerRoot(默认/etc/httpd)

5.定义’Main’server的文档页面路径

DocumentRoot “”

文档路径映射:

DocumentRoot指向的路径为URL路径的起始位置

其相当于站点URL的根路径;

(FileSystem)/web/host1/index.html -->(URL)/index.html

650) this.width=650;" src="https://s1.51cto.com/oss/201711/02/0dda17822b77e7f26cc11d4230ecdd32.png-wh_500x0-wm_3-wmp_4-s_1819104908.png" title="14.png" alt="0dda17822b77e7f26cc11d4230ecdd32.png-wh_" />

我们可以自定义网页文件站点,并不一定把网页文件放在/var/www/html目录下;

1)修改配置文件,把下图中路径都改为现在定义的路径;

650) this.width=650;" src="https://s3.51cto.com/oss/201711/02/4fc02b3ff747a2e9058b5085bdc7dabd.png-wh_500x0-wm_3-wmp_4-s_1834411652.png" title="15.png" alt="4fc02b3ff747a2e9058b5085bdc7dabd.png-wh_" />

2)创建相关文件及目录;

650) this.width=650;" src="https://s3.51cto.com/oss/201711/02/699f3233f93f59172f5cf891890bbe19.png-wh_500x0-wm_3-wmp_4-s_3923484010.png" title="16.png" alt="699f3233f93f59172f5cf891890bbe19.png-wh_" />

3)重新加载配置文件,测试;

650) this.width=650;" src="https://s1.51cto.com/oss/201711/02/e960eac25a8166d29f070bf62a4aa87e.png-wh_500x0-wm_3-wmp_4-s_1378048338.png" title="17.png" alt="e960eac25a8166d29f070bf62a4aa87e.png-wh_" />

6.站点访问控制常见机制;

可基于两种机制指明对哪些资源进行何种访问控制;

文件系统路径:

<Directory "">

...

</Directory>

<File"">

...

</File>

<FileMatch "PATTERN">

...

</FileMatch>

URL路径:

<Location "">

...

</Location>

<LocationMatch "">

...

</LocationMatch>

<Directory>中“基于源地址”实现访问控制;

1)Options

后跟1个或多个以空白字符分隔的“选项”列表;

Indexes:指明的URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给用户;

FollowSymLinks:允许跟踪符号链接文件所指向的源文件;

None:

All:

2)AllowOverride

与访问控制相关的哪些指令可以放在.htaccess文件(每个目录下都可以有一个)中;

All:

None:

3)order和allow、deny

order:定义生效次序;写在后面的表示默认法则;

orderallow,deny(设置白名单)

orderdeny,allow(设置黑名单)

Allow from:

Deny from:

650) this.width=650;" src="https://s3.51cto.com/oss/201711/02/c5b26e57c691a598272453963fb1eaae.png-wh_500x0-wm_3-wmp_4-s_2708500961.png" title="18.png" alt="c5b26e57c691a598272453963fb1eaae.png-wh_" />

示例:

1)设置白名单;

650) this.width=650;" src="https://s5.51cto.com/oss/201711/02/6aa06a0fdd605d164e5d192cfbf7e5b9.png-wh_500x0-wm_3-wmp_4-s_681758480.png" title="19.png" alt="6aa06a0fdd605d164e5d192cfbf7e5b9.png-wh_" />

2)测试,在192.168.19.134主机上测试,不能访问了;

650) this.width=650;" src="https://s3.51cto.com/oss/201711/02/8b7f823b9f9e60e54871f7effd7b89b9.png-wh_500x0-wm_3-wmp_4-s_2142664175.png" title="20.png" alt="8b7f823b9f9e60e54871f7effd7b89b9.png-wh_" />

7.定义默认主页面;

DirectoryIndex index.htmlindex.html.var

650) this.width=650;" src="https://s2.51cto.com/oss/201711/02/c0eaed82f6a40a3c4af1384bd643d2c7.png-wh_500x0-wm_3-wmp_4-s_1162491605.png" title="21.png" alt="c0eaed82f6a40a3c4af1384bd643d2c7.png-wh_" />

8.定义路径别名;

格式:

Alias/URL/ “/PATH/TO/SOMEDIR/”

DocumentRoot“/www/htdocs”

http://www.magedu.ocm/download/bash-4.4.2-3.el6.x86_64.rpm

/www/htdocs/download/bash-4.4.2-3.el6.x86_64.rpm

Alias/download/ “/rpms/pub/”

http://www.magedu.com/download/bash-4.4.2-3.el6.x86_64.rpm

/rpms/pub/bash-4.4.2-3.el6.x86_64.rpm

示例:

1)编辑配置文件,定义别名;

650) this.width=650;" src="https://s3.51cto.com/oss/201711/02/2f89ebc08ead023cda29c771d2a8bcff.png-wh_500x0-wm_3-wmp_4-s_2260115323.png" title="22.png" alt="2f89ebc08ead023cda29c771d2a8bcff.png-wh_" />

2)创建相关文件及目录

650) this.width=650;" src="https://s2.51cto.com/oss/201711/02/860d84abea46153caa802bbaf323ad90.png-wh_500x0-wm_3-wmp_4-s_1169802591.png" title="23.png" alt="860d84abea46153caa802bbaf323ad90.png-wh_" />

3)测试;

650) this.width=650;" src="https://s1.51cto.com/oss/201711/02/d5766b4698f8e6dda02bcca671eb76dd.png-wh_500x0-wm_3-wmp_4-s_3534389382.png" title="24.png" alt="d5766b4698f8e6dda02bcca671eb76dd.png-wh_" />

9.设定默认字符集;

AddDefaultCharset UTF-8

650) this.width=650;" src="https://s5.51cto.com/oss/201711/02/f15ae733ad2b00201d74299cca59f355.png-wh_500x0-wm_3-wmp_4-s_1545701907.png" title="25.png" alt="f15ae733ad2b00201d74299cca59f355.png-wh_" />

10.日志设定

日志类型:访问日志 和 错误日志

错误日志:

ErrorLog logs/error_log

LogLevel warn

Possible values include: debug, info, notice,warn, error, crit, alert, emerg.

650) this.width=650;" src="https://s3.51cto.com/oss/201711/02/6158f974b915e320df063220730580cf.png-wh_500x0-wm_3-wmp_4-s_3159764158.png" title="26.png" alt="6158f974b915e320df063220730580cf.png-wh_" />

访问日志:

LogFormat “%h %l %u %t \”%r\”%>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined

650) this.width=650;" src="https://s4.51cto.com/oss/201711/02/41f8ff6e3fcf4a9574514f36f41ef55f.png-wh_500x0-wm_3-wmp_4-s_1431886482.png" title="27.png" alt="41f8ff6e3fcf4a9574514f36f41ef55f.png-wh_" />

CustomLoglogs/access_log combined

650) this.width=650;" src="https://s4.51cto.com/oss/201711/02/dcb05ed94f46b2c8e2ab822cafc90d15.png-wh_500x0-wm_3-wmp_4-s_302952966.png" title="28.png" alt="dcb05ed94f46b2c8e2ab822cafc90d15.png-wh_" />

LogFormatformat strings:

http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

%h:客户端ip地址;

%l:Remote User,通常为一个减号(“-”);

%u:Remote user(fromauth;may be bogus if return status(%s)is 401);非为登录访问时,其为一个“-”号

%t:服务器收到的请求时的时间;

%r:First line ofrequest,即表示请求报文的首行;记录了此次请求的方法,URL以及协议版本;

%>s:响应状态码;

%b:响应报文的大小,单位是字节;不包括响应报文的http首部;

%{Referer}i:请求报文中首部“referer”的值;即从哪个页面中的超链接跳转至当前页面的;

%{User-Agent}i:请求报文中首部“User-Agent”的值;即发出请求的应用程序;

示例:在192.168.19.134主机上访问192.168.19.128,在19.128主机上查看日志;

650) this.width=650;" src="https://s2.51cto.com/oss/201711/02/b7470d5208195e306e5a85a37854a395.png-wh_500x0-wm_3-wmp_4-s_1291213159.png" title="29.png" alt="b7470d5208195e306e5a85a37854a395.png-wh_" />

11.基于用户的访问控制;

认证质询:

www-authenticate:响应码为401,拒绝客户端请求,并说明要求客户端提供账号和密码;

认证:

Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过时,则服务器发送响应的资源;

认证方式有两种;

Basic:明文

Digest:消息摘要认证;

安全域:需要用户认证后方能访问的路径;应该通过名称对其进行标识,以便于告知用户认证的原因;

用户的账号和密码存放在何处?

虚拟账号:仅用于访问某服务时用到的认证标识;

存储:

文本文件;

SQL数据库;

ldap目录存储;

basic认证配置示例:

1)定义安全域

<Directory “”>

OptionsNone

AllowOverride None

AuthType Basic

AuthName “String”

AuthUserFile “PATH/TO/HTTPD_USER_PASSWD_FILE”

Require user username1 username2 …

</Directory>

允许账号文件中的所有用户登录访问:

Requirevalid-user

2)提供账号和密码存储(文本文件)

使用专用命令完成此类文件的创建及用户管理

htpasswd [options]/PATH/TO/HTTPD_PASSWD_FILEusername

-c:自动创建此处指定的文件,因此,仅应该在此文件不存在时使用;

-m:md5格式加密;

-s:sha格式加密;

-D:删除指定用户

另外:基于组账号进行认证;

  • 定义安全域

<Directory "">

Options None

AllowOverride None

AuthType Basic

AuthName "String“

AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE"

AuthGroupFile"/PATH/TO/HTTPD_GROUP_FILE"

Require groupgrpname1 grpname2 ...

</Directory>

  • 创建用户账号和组账号文件;

 

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved