在Linux上设置web站点(二)——httpd2.2的基础配置

一、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中添加如下指令:

Listen172.16.88.99:8000
NameVirtualHost 172.16.88.99:80

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

<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的内容如下

<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的内容如下

<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:

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

原文地址:http://blog.51cto.com/papapa213/2107692

时间: 2024-10-03 11:02:46

在Linux上设置web站点(二)——httpd2.2的基础配置的相关文章

在Linux上设置web站点(三)——在httpd2.2中设置https服务

https是以安全为目标的http通道,在http下加入了SSL层,https的安全基础是ssl,因此加密的详细内容就需要ssl. 下面简介在https2.2下设置https服务的步骤 1.创建私有CA: 使用openssl命令,详细介绍:http://blog.51cto.com/papapa213/2096589 1)创建CA的私钥: (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) 2)生成自签证书: op

在linux上设置web站点

一.http协议:超文本传输协议 应用层协议,使用TCP协议承载,端口号为80 http协议的功能: MIME:多用途互联网邮件扩展,可以传输非纯文本文件 Cache:缓存机制 Method:GET,PUT,POST,DELETE,HEAD,TRACE,CONNECT,OPTIONS: GET:请求获取指定的资源: PUT:向指定的位置上传资源的最新版本: POST:用于实现表单认证,在资源之后附加相关数据: DELETE:请求服务器删除被明确标识的资源: HEAD:与GET方法相同,都是向服务

linux 上备份 web 站点的脚本。

[[email protected] script]# cat back_web.sh  #!/bin/bash #use scp  not use password . so do it -->#ssh-keygen -t rsa -->   scp -p .ssh/id_rsa.pub [email protected]机器B的IP:/root/.ssh/authorized_keys  #mkdir  & go to backup ########################

如何构建日均千万PV Web站点(二) 之~缓存为王~

随着网站业务的不断发展,用户的规模越来越大:介于中国无比蹩脚复杂的网路环境:南电信:北联通:中间竟然只用一条链路进行互联通信!有研究表明,网站访问延迟和用户流失率正相关,网站访问速度越慢,用户越容易失去耐心而离开.为了提高更好的用户体验,留住用户,网站需要加速网站访问速度.如今主要的手段只有使用CDN和反向代理了:此时网站的架构应该是这样的: 1.使用CDN和缓存服务器:CDN和反向代理的基本原理都是缓存数据,区别就在于CDN部署在网络提供商的机房,使用户在请求网站服务时,可以从距离自己最近的网

Linux上部署web服务器并发布web项目

近在学习如何在linux上搭建web服务器来发布web项目,由于本人是linux新手,所以中间入了不少坑,搞了好久才搞出点成果.以下是具体的详细步骤以及我对此做的一些总结和个人的一些见解,希望对跟我一样的新手们有些帮助,有误的地方还请大神们指出 ??!(以下操作都是在虚拟机中进行) 1.选用CentOS6 64位作为服务器系统. (原因:redhat要钱,而CentOS免费:CentOS相比于其它linux系统要成熟.稳定一点:CentOS7操作命令和目录结构发生了一些变化所以选用版本6) 2.

VS 远程调试阿里云上的web站点,Remote Debugger

调试步骤 远程服务器: 1.找到本地vs安装目录,Enterprise\Common7\IDE目录下的Remote Debugger整个文件夹复制到远程服务器 2.根据服务器的系统类型,选择其中的x64或x86文件夹,以管理员身份运行msvsmon.exe 3.将vs生成的项目文件发布到远程服务器,带上调试文件,pdb,最好使用debug模式完成 本地: 4.本地vs代码保持与服务器同步,不要修改 5.调试-->附加到进程,连接类型为 默认,连接目标填上远端服务器的IP:端口,回车(此处注意,不

二、nginx服务器基础配置命令

默认nginx服务器配置文件都存放在安装目录conf中,主配置文件名为nginx.conf. 默认nginx.conf在/usr/local/nginx目录下,上次编译安装nginx主配置文件存放在/etc/nginx下. 安装编译:http://magine356wj.blog.51cto.com/2664956/1677064 下面是关于nginx.conf的一些注释 #####################全局块######################################

linux上nginx新建站点

首先远程连接云服务器 首先,用cd命令找到nginx的配置文件,或者直接用vi命令打开这个文件,一般是/etc/nginx/nginx.conf这个文件 看到没有,nginx.conf配置文件果然在这里,下面用vi命令打开它 自箭头以下都是这个文件的内容,我么来看其中的部分字段: 这个host配置告诉我们,这个nginx会到如下的两个地方去读取站点配置信息,那么,既然我们既然是要赋值之前的后台,那么就去找之前的后台站点配置文件吧: 看完了文件之后,想要退出怎么办,这里我们是通过vi来看文件内容的

安装ORACLE时在Linux上设置内核参数的含义

转自:http://www.blogjava.net/tbwshc/archive/2012/09/13/387652.htmlhttp://blog.csdn.net/wuweilong/article/details/7420310 安装Oracle之前,除了检查操作系统的硬件和软件是否满足安装需要之外,一个重点就是修改内核参数,其中最主要的是和内存相关的参数设置. SHMMAX参数:Linux进程可以分配的单独共享内存段的最大值.一般设置为内存总大小的一半.这个值的设置应该大于SGA_MA