一、httpd2.2的组成:

/etc/httpd:服务器的根目录

conf/httpd.conf,conf.d/*:配置文件

conf/magic:MIME的配置文件

logs:日志文件的存放路径,符号链接/var/log/httpd

modules:动态模块文件的存放路径,符号链接/usr/lib64/httpd/modules

run:httpd主进程pid的存放路径,符号链接/usr/run/httpd

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

在此配置文件中,所有的配置项均被称为指令(Directive)

指令的格式:Directive Value

在主配置文件中,所有的指令都被分组到三个配置段中:

### Section 1: Global Environment

### Section 2: 'Main' server configuration

### Section 3: Virtual Hosts

二、常用的配置指令:

Section 1: Global Environment:全局配置段

1.Listen Directive

定义服务器监听的有效套接字

格式:Listen [IPADDR:]port [protocol]

注意:

1.在各配置文件中,Listen指令可以出现多次,用于定义不同的监听套接字

2.Listen指令不能省略,否则服务器无法启动

3.如果省略IP地址,将会监听当前服务器所有被正确配置并生效的IP地址

4.在httpd2.2中,如果更改Listen中IP地址信息,则必须重启httpd进程才能生效,仅仅reload不能生效

2.KeepAlive Directive

开启或关闭HTTP协议的长链接功能

格式:KeepAlive On|Off

KeepAliveTimeout Directive

服务器在一个长链接上能够达到的子回话请求的最大时间间隔;默认的时间单位为秒

格式:KeepAliveTimeout number

MaxKeepAliveRequests Directive

一个长链接上所能够接受的最大的用户请求数量,默认是100个

格式:MaxKeepAliveRequests number

以上三条指令是与长链接相关的指令,长链接的断开条件:

时间限制、请求数量限制

使用Telnet测试长链接:

设置KeepAlive On ,重载httpd服务,默认 KeepAliveTimeout的值为15

3.MPM相关指令:

MPM:多道处理模块;

httpd-2.2的MPM不支持DSO机制,且event为测试模式

/usr/sbin/httpd

/usr/sbin/httpd.event

/usr/sbin/httpd.worker

通过修改/etc/sysconfig/httpd文件来完成MPM功能切换;

HTTPD=/usr/sbin/httpd.worker

每次更换MPM模块,都需要重启httpd服务后才能生效,/etc/sysconfig/httpd是服务启动脚本/etc/init.d/httpd的配置文件;

查看httpd或httpd.worker程序的模块列表:

httpd -M

httpd.worker -M

查看httpd或httpd.worker程序的静态编译模块列表

httpd -l

httpd.worker -l

与prefoik模块相关的配置指令:

<IfModule prefork.c>

StartServers       8

//在服务主进程启动之后,预先fork多少子进程

MinSpareServers    5

//最少预留的空闲子进程的数量

MaxSpareServers   20

//最多预留的空闲子进程的数量

ServerLimit      256

//为MaxClient指令定义上限

MaxClients       256

//最多的客户端并发访问量

MaxRequestsPerChild  4000

//每个子进程能够处理的客户端请求的最大值

</IfModule>

与worker模块相关的配置指令

<IfModule worker.c>

StartServers         4

//在服务主进程启动之后,预先fork多少个子进程;

MaxClients         300

//最多的客户端并发访问量

MinSpareThreads     25

//最少预留的空闲线程的数量

MaxSpareThreads     75

//最多预留的空闲线程的数量

ThreadsPerChild     25

//每个子进程可以管理的线程数量

MaxRequestsPerChild  0

//每个子进程可以处理的客户端请求的最大值

</IfModule>

4.DSO机制:

链接动态模块并将其添加至活动模块列表

格式:LoadModule module filename

例:

LoadModule auth_basic_module modules/mod_auth_basic.so

modules是相对于ServerRoot指令定义的根目录的路径而言的

5.Include Directive

可以包括除了主配置文件之外的其他服务配置文件;支持Globbing

格式:Include file-path | directory-path | wildcard

示例:

Inlude conf.d/*.conf

6.User Directive

指定启动子进程的用户ID和组ID

格式:User User-Id

Group Group-Id

Section 2: 'Main' server configuration,定义了默认的web站点的基本属性

    7.ServerAdmin Directive

定义了发送错误信息的邮箱地址;

格式:ServerAdmin email-address|URL

ServerName Directive

服务器做自我标识时使用的主机名和端口号的组合;

格式:ServerName [scheme://]domain-name|ip-address[:port]

DocumentRoot Directive

为web站点的资源提供路径映射;

格式:DocumentRoot directory-path

示例:

DocumentRoot "/var/www/html"

8.站点资源访问控制资源指令

1)基于文件系统的访问控制指令

a.基于指定目录的访问控制指令

<Directory "/PATH/TO/SOME_DIR">

Options Directive

AllowOverride Directive

Order Directive

Allow Directive

Deny Directive

</Directory>

b.基于特定文件的访问控制指令

<File "FILENAME">

Directive Value

</File>

c.基于模式匹配的方式进行访问控制的指令

<FilesMatch regex>

Directive Value

</FilesMatch>

<DirectoryMatch regex>

Directive Value

</DirectoryMatch>

2)基于URL的访问控制指令

a.基于URL进行访问控制:

<Location URL-path|URL>

Directive Value

</Location>

b.基于URL的模式匹配的方式进行访问控制:

<LocationMatch regex>

Directive Value

</LocationMatch>

3)指令具体内容

①Options Directive

指定的目录中激活web访问控制相关特性;

格式:Options [+|-]option [[+|-]option] ...

取值可以是:None, All, Indexes, Includes, FollowSymLinks, SymLinksifOwnerMatch, ExecCGI, MultiViews...

Indexes:启用DocumentRoot的索引特性;当web站点没有定义符合要求的主页或者主页不存在时,在浏览器上允许以索引的方式列表显示整个DocumentRoot中所有的资源给用户选择;一般用于资源下载站点;对于正常的web站点来说,应禁用此功能;

FollowSymLinks:跟踪符号链接并找到被链接的文件,并可以在客户端浏览器中打开;

SymLinksifOwnerMatch:只有处理客户端请求的子进程的所有者与符号链接文件的所有者为同一用户时,才跟踪符号链接;

②AllowOverride Directive

控制被允许放置于.htaccess文件中的指令是否生效;

格式:AllowOverride All|None|directive-type [directive-type]

httpd允许在web站点的文档根目录中以及各级子目录中使用.htaccess文件进行资源的访问控制;凡是放置于.htaccess文件中的指令,有继承的特性;如果每次执行指令都要读取该文件进行比对,则运行效率会下降,所以通常建议该指令的值设置为"None";

③Order Directive

定义基于IP地址的访问控制管理的顺序;

a.配置顺序:

根据指定的Allow和Deny的顺序来执行;

b.范围顺序:

匹配范围越小的,越优先执行;

格式:Order ordering

ordering可以包含两种通用顺序:

Allow, Deny:

先计算Allow指令的匹配,如果能够匹配任意规则,则允许;

再计算Deny指令的匹配,如果能够匹配任意规则,则阻止;

如果没有匹配,则默认阻止所有;

Deny, Allow:

先计算Deny指令的匹配,如果能够匹配任意规则,则阻止;

再计算Allow指令的匹配,如果能够匹配任意规则,则允许;

如果没有匹配,则默认允许所有;

④Deny Directive

控制阻止访问服务器的客户端主机;

格式:Deny from all|host|env=[!]env-variable [host|env=[!]env-variable] ...

Allow Directive

控制允许访问服务器的客户端主机;

格式:Allow from all|host|env=[!]env-variable [host|env=[!]env-variable] ...

host可以写成:

域名或FQDN:example.net www.abc.com

单个IP:172.16.0.1

逻辑网段:172.16 172.16.0.0/16 172.16.0.0/255.255.0.0

示例:

Order allow,deny

Allow from all

//允许所有客户端主机访问当前服务器的web站点服务;

Order deny,allow

Deny from 172.16.0.1

//仅阻止IP地址为172.16.0.1的主机访问当我服务器的web站点服务;

9.DirectoryIndex Directive

为当前web站点指定默认的主页文件名称;

格式:DirectoryIndex disabled | local-url [local-url] ...

注意:

1) DirectoryIndex指令之后可以设置多个本地URL作为主页文件名称;按照顺序从前到后进行名称匹配,如果能够匹配成功,就将该资源当作本站点的主页文档;如果没有匹配成功,且Options指令中也没有定义Indexes特性,则web服务器阻止本次请求;

2) 如果请求资源时明确的给出URL,则DirectoryIndex指令的值无任何意义;

10.日志相关指令

ErrorLog Directive

标明错误信息的日志记录的位置(文件路径)

格式:ErrorLog file-path|syslog[:[facility][:tag]]

示例:

ErrorLog logs/error_log

LogLevel Directive

控制错误日志记录的详细程度;

格式:LogLevel [module:]level [module:level] ...

level包括:emerg、alert、crit、error、warn、notice、info、debug

注意:

1) 日志记录等级越高,在错误日志中记录的信息就会越少;

2) 选择的日志记录等级,有向上兼容的特性;

CustomLog Directive

标明记录访问日志的文件的路径及日志记录的格式;

格式:CustomLog file format

示例:

CustomLog logs/access_log combined

LogFormat Directive

功能:描述了在访问日志中记录信息的特定格式;

格式:LogFormat format|nickname [nickname]

常用的format:

%h:远程主机名称;如果HostnameLookups的值设置为Off,则记录远程主机的IP地址;

%l:远程登录名称;如果没有登录名,就在日志中记录为"-";

%u:远程用户名称;记录通过身份验证之后访问资源的用户名称;

%t:收到客户端请求的时候的服务器的时间戳;[18/Sep/2011:19:18:28 -0400]

\"%r\":请求报文首部的首行;

"GET /index.html HTTP/1.1"

%>s:请求报文的状态信息;

%b:以字节为单位的响应报文的长度;

\"%{Referer}i\":访问此页面之前通过哪个超链接跳转而来;使用"{}"引用的内容是报文首部中的首部名称;

\"%{User-Agent}i\":客户端使用的http应用程序及相关信息;

示例:

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

LogFormat "%h %l %u %t \"%r\" %>s %b" common

LogFormat "%{Referer}i -> %U" referer

LogFormat "%{User-agent}i" agent

四种格式,默认选择combined

CustomLog logs/access_log combined

11.定义路径别名的指令:

Alias Directive

将指定的URL映射至本地的文件系统路径;

格式:Alias URL-path file-path|directory-path

示例:

Alias /icons/ "/var/www/icons/"

<Directory "/var/www/icons">

Options Indexes MultiViews FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

AliasMatch Directive

使用正则表达式将URL映射至本地的文件系统路径;

格式:AliasMatch regex file-path|directory-path

示例:

AliasMatch ^/exam(.*)?$ "/tmp/exam$1"

<Directory "/tmp/exam/">

Options None

AllowOverride None

Order allow,deny

Allow from all

</Directory>

12.服务器系统状态数据查询:

前提:LoadModule status_module modules/mod_status.so

<Location /server-status>

SetHandler server-status

Order deny,allow

Deny from all

Allow from 172.16

</Location>

ExtendedStatus On|Off:开启或关闭更多的额外状态信息展示;

三、虚拟主机配置段:

### Section 3: Virtual Hosts

<VirtualHost> Directive

启动并配置虚拟主机及相关参数;

格式:

<VirtualHost addr[:port] [addr[:port]] ...>

Directive Value

</VirtualHost>

使用虚拟主机:默认一个httpd仅能构建一个web站点,因此很多的情况下,我们需要在同一台服务器上架构多个web站点,此时则需要使用虚拟主机来定义。如果启用了虚拟主机,每个独立的Web站点都必须要有至少一个独立的主机标识:

IP地址 + Port + 主机头(请求报文首部中的Host首部的值,通常为FQDN)

三种典型的虚拟主机实现方式:

1) 基于IP地址构建的虚拟主机;

2) 基于Port构建的虚拟主机;

3) 基于主机头构建的虚拟主机;

注意:Main Server和Virtual Host不能同时被定义;而且一旦虚拟主机配置被激活,Main Server就不再有效;

常用指令:

NameVirtualHost Directive

功能:在使用基于主机头构建虚拟主机时,指定虚拟主机名称;

格式:NameVirtualHost addr[:port]

配置示例:

/etc/httpd/conf/httpd.conf中添加如下指令:

1
2
Listen172.16.88.99:8000
NameVirtualHost 172.16.88.99:80

/etc/httpd/conf.d/vhost1.conf的内容如下:

1
2
3
4
5
6
7
8
9
10
<VirtualHost 192.168.109.2:80>
    ServerNamewww.ppp213.com
    DocumentRoot"/myvhost/vhost1/"
    <Directory "/myvhost/vhost1">
        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

/etc/httpd/conf.d/vhost2.conf的内容如下

1
2
3
4
5
6
7
8
9
10
<VirtualHost 192.168.109.20:8080>
    ServerNamewww.ppp213.cn
    DocumentRoot"/myvhost/vhost2/"
    <Directory "/myvhost/vhost2/">
        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

/etc/httpd/conf.d/vhost3.conf的内容如下

1
2
3
4
5
6
7
8
9
10
<VirtualHost 192.168.109.20:80>
    ServerName www.ppp213.org
    DocumentRoot "/myvhost/vhost3/"
    <Directory "/myvhost/vhost3/">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>
</VirtualHost>

为主机添加新的ip地址 192.168.109.20:

1
ip add add 192.168.109.20/16 dev eth0 label eth0:0

分别创建/myvhost/vhost1,/myvhost/vhost2,/myvhost/vhost3,并再其下创建index.html,重新载入httpd服务后,分别访问192.168.109.2、192.168.109.20、192.168.109.20:8080

linux系统web站点设置-http基础设置的更多相关文章

  1. Linux系统WEB服务之Nginx基础入门

    一.Nginxi简介 Nginx是什么?它是一个开源.高性能的WEB服务器软件和代理服务器软件,由俄罗斯人Igor Sysoev 开发实现.它的功能主要分三类,第一是它作为一个WEB服务软件使用:第二 ...

  2. Linux系统Web网站目录和文件安全权限设置

    查看Linux文件的权限:ls -l 文件名称查看linux文件夹的权限:ls -ld 文件夹名称(所在目录)例如: drwxr-xr-x 2 root root 4096 2009-01-14 17 ...

  3. linux系统web日志分析脚本

    linux系统web日志分析这方面工具比较多,比如logwatch或awstats等使用perl语言开发,功能都非常强大.但这些软件都需要进行一些配置,很多朋友往往在技术方面没有投入太多力量,即便参照 ...

  4. Linux系统如何将某一程序设置为开机自启动

    文章来源:百度知道. Linux开机启动程序详解 我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍L ...

  5. 在linux系统中通过fw_printenv查看和设置u-boot中的环境变量

    uboot下可以通过命令访问(printenv)和修改环境变量(setenv),但是如果需要在Linux系统下访问这些数据该怎么办呢?其实uboot早就帮我们想好了.  1.编译fw_printenv ...

  6. 2.Linux系统之硬盘与分区基础知识

    我们是在虚拟机上安装的Linux系统.在安装的过程中,可能会遇到磁盘分区的问题,我们下面简单介绍一下分区的原理. 1.硬盘的基础知识 下面是一块空白的硬盘: 这是一块格式化后的硬盘: 格式化就是,在空 ...

  7. 虚拟机克隆linux系统后需要做的网络设置

    1.vim /etc/sysconfig/network-scripts/ifcfg-eth0删除HWMAC地址行,然后重新分配静态IP/掩码/网关/DNS 2.vim /etc/udev/rules ...

  8. Linux系统学习 三、网络基础—虚拟机网络配置

    Linux网络基础 Linux的ip地址配置 Linux网络配置文件 常用网络命令 虚拟机网络参数配置 1.配置Linux的IP地址 首先配置一个IP地址,让IP生效. ifconfig查看当前网络配 ...

  9. Linux系统学习笔记之 1 基础命令

    翻看日记,看到以前自己学习Linux是的笔记来了,温故而知新乎.   文件命名规则: 1.除了/之外,所有的字符都合法. 2.有些字符最好不要用,如空格符.制表符.退格符.和@ # & ( ) ...

随机推荐

  1. 获取tensorflow中tensor的值

    tensorflow中的tensor值的获取: import tensorflow as tf #定义变量a a=tf.Variable([[[1,2,3],[4,5,6]],[[7,8,9],[10 ...

  2. css3边框与背景

    一.css3边框 1.border-image 边框 border-image: url(xxx.png) number stretch 很好理解就是拉伸,有多长拉多长. repeat (和4角上 同 ...

  3. js基础-函数基础

    js 先对函数进行解析 然后在执行函数 定义一个函数 实现求两个数的乘 function mult(a,b){ return a*b; } mult(1,3) 计算1 - n 的和 封装成函数 fun ...

  4. 第三章,DNA序列的进化演变

    31.前言 3.1.两个序列间的核苷酸差异 来自同一祖先序列的两条后裔序列,之间的核苷酸的差异随着时间的增加而变大.简单的计量方法,p距离 3.2.核苷酸代替数的估计 3.3.Jukes和Cantor ...

  5. svn 更新lib库时,报错

    svn: E195012: Unable to find repository location for svn:// in revision 9718 Can't revert without re ...

  6. git库初次下载

    1.右键Git Batch Here==>输入 git config --list 确认2.再次输入ssh-keygen -t rsa -C “修改后的邮箱” 3.回车多次 找到 生成序列目录 ...

  7. 无线LoRa智能远传水表

    1.1 主流程 无线远传智能预付费水表是基于瑞萨R7F0C002芯片开发的一款水表,该款水表包含了电子计数.远程充值.远程开关阀.费控.欠费提醒等功能. 水表通信采用LoRa无线模式,芯片采用SX12 ...

  8. docker 安装与使用

    1.yum安装docker yum -y install docker 2.启动docker service docker start 3.检验运行状态 systemctl status docker ...

  9. python学习 day19 configparser模块 os模块 subprocess模块

    上周五回顾 logging 用于记录日志 四种核心角色: 生成器Logger 过滤器Filter 处理器Handler 格式化处理器 Formatter logging.info.debug 使用默认 ...

  10. 第十一章 串 (b1)串匹配