httpd系列-01-配置

[TOC]

配置文件概览

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

  • httpd -t 可测试配置文件的语法是否有误

  • 配置文件大概分为3个部分,可以通过grep命令来大致查看:

[root@c2 conf]# grep "Section" httpd.conf
### Section 1: Global Environment
### Section 2: 'Main' server configuration
### Section 3: Virtual Hosts
  • 另外,Main server和Virtual Hosts配置同时只能有一个生效

  • 可以在/etc/httpd/conf.d/目录下定义以.conf结尾的文件来定义属性,也可以直接修改httpd.conf文件

httpd.conf配置文件的内容格式基本都是

directive-name directive-value

比如

MaxKeepAliveRequests 100

几个命令

  • htpasswd:可用于生成访问控制所需的用户密码文件
    • -c:新建文件
    • -m:以md5的方式加密
    • -d:删除指定文件中的指定用户
[root@c2 conf.d]# htpasswd -c -m /etc/httpd/.users tom
New password: 
Re-type new password: 
Adding password for user tom
[root@c2 conf.d]# htpasswd -m /etc/httpd/.users cat
New password: 
Re-type new password: 
Adding password for user cat
[root@c2 conf.d]# cat /etc/httpd/.users 
tom:$apr1$j/IgPNIo$5zyp/tnoWrGencgOWlIYu/
cat:$apr1$W.Vbd.1S$2er0pf.3dtKjP71L9VPJI1
  • httpd
    • -l:查看内置模块:
    • -M:
[root@c2 conf.d]# httpd -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c

常用配置说明

全局配置

基本配置


# 显示服务器信息,详情可参考 : http://www.ha97.com/2505.html
ServerTokens OS

## ServerRoot
ServerRoot "/etc/httpd"

## PidFile run/httpd.pid
PidFile run/httpd.pid

# Timeout: The number of seconds before receives and sends time out.
Timeout 60

# 是否启用长连接
KeepAlive Off|On

# 一个长连接所允许的最大请求数目
# 0表示无限制
MaxKeepAliveRequests 100

# 一个长连接允许的最大"发呆时间",单位:秒
KeepAliveTimeout 15

#指定监听地址和端口
# Listen 192.168.1.111:80
Listen 80

# Load config files from the config directory "/etc/httpd/conf.d".
Include conf.d/*.conf

# 指定worker子进程以哪个用户的身份运行
User apache
Group apache

LoadModule

该指令配置httpd在启动的时候加载哪些模块

格式:

LoadModule 模块名 模块路径(相对)
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
........................

Options

  • None:不支持任何选项
  • Indexes:索引目录功能
  • FollowSymLinks:是否允许访问符号链接指向的原文件
  • Includes:是否允许服务器端包含(SSI-ServerSideInclude)
  • SymLinksifOwnerMatch
  • ExecCGI:允许允许CGI脚本
  • MultiViews:内容协商相关的多视图技术支持,比如国际化等
  • All:支持所有选项

Allow

定义基于主机的访问控制

# 顺序
Order allow,deny
Allow from all

# 只禁止192.168.0.1,172.16.100.177访问
Order from deny,allow
Deny 192.168.0.1,172.16.100.177
# 禁止任何用于远程访问以.ht开头的文件
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>

AllowOverride

AllowOverride AuthConfig

# 认证类型:基本认证
AuthType Basic

# 认证提示
AuthName "Restricted Site ..."

# 认证所需用户密码文件位置
AuthUserFile "/etc/httpd/conf/.users"
# AuthGroupFile "/etc/httpd/conf/.groups"

# AuthUserFile所定义的所有用户都可以访问
Require valid-user
# 只允许tom访问
# Require user tom
# Require group my_group_name

Directory

本地文件系统

<Directory "/web/htdocs/4">
    Options None
    AllowOverride AuthConfig
    AuthType Basic
    AuthName "用户认证"
    AuthUserFile /etc/httpd/conf/.users
    Require valid-user
</Directory>

Location

<Location /status>
    SetHandler server-status
    Order Deny,Allow
    Deny from all
    Alow from foo.bar.com
</Location>

Main server配置

ServerAdmin root@localhost

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If this is not set to valid DNS name for your host, server-generated
# redirections will not work.  See also the UseCanonicalName directive.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
# You will have to access it by its address anyway, and this will make 
# redirections work in a sensible way.
#ServerName www.example.com:80

#
# UseCanonicalName: Determines how Apache constructs self-referencing 
# URLs and the SERVER_NAME and SERVER_PORT variables.
# When set "Off", Apache will use the Hostname and Port supplied
# by the client.  When set "On", Apache will use the value of the
# ServerName directive.
UseCanonicalName Off

# 站点根目录
DocumentRoot "/var/www/html"

# 默认主页
DirectoryIndex index.html index.html.var

# 支持的MIME类型定义文件所在路径
TypesConfig /etc/mime.types

# 默认的MIME类型
DefaultType text/plain

# 日志(access_log)中记录client的IP地址(Off)还是其hostname(On)
# 一般都是Off,因为反解析主机名较浪费时间
HostnameLookups Off

ErrorLog logs/error_log

# debug, info, notice, warn, error, crit,alert, emerg.
LogLevel warn



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即为LogFormat的别名
CustomLog logs/access_log combined

# 别名
Alias /icons/ "/var/www/icons/"

虚拟主机配置

虚拟主机和Main Server同时只能有一个起作用,注释掉DocumentRoot即可禁用Main Server

对于虚拟主机的配置可直接在httpd.conf中编辑定义,也可在/etc/httpd/conf.d/目录下定义以.conf结尾的文件来定义。

# Use name-based virtual hosting.
#NameVirtualHost *:80

# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /www/docs/dummy-host.example.com
    ServerName dummy-host.example.com
    ErrorLog logs/dummy-host.example.com-error_log
    CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>

基于主机名、IP、端口混合的虚拟主机定义例子:


Listen 8080

# 在所有IP上,80端口使用基于主机名的虚拟主机
# NameVirtualHost *:80

<VirtualHost 192.168.1.103:80>
    ServerName my-host-1.com
    DocumentRoot /web/htdocs/1
    CustomLog logs/referer_log combined
    <Directory "/web/htdocs/1">
        Options Indexes
        AllowOverride None
        Order deny,allow
        # 拒绝192.168.1.106访问
        Deny from 192.168.1.106
    </Directory>
</VirtualHost>

<VirtualHost 192.168.1.103:80>
    ServerName my-host-2.com
    DocumentRoot /web/htdocs/2
</VirtualHost>

<VirtualHost 192.168.1.166:80>
    ServerName my-host-3.com
    DocumentRoot /web/htdocs/3
</VirtualHost>

<VirtualHost 192.168.1.103:8080>
    # 添加:Listen 8080
    ServerName my-host-4.com
    DocumentRoot /web/htdocs/4
    <Directory "/web/htdocs/4">
        Options None
        AllowOverride AuthConfig
        AuthType Basic
        AuthName "用户认证"
        AuthUserFile /etc/httpd/conf/.users
        Require valid-user
    </Directory>
</VirtualHost>

和MPM相关的配置

MPM相关信息请看下文MPM章节

<IfModule prefork.c></IfModule>之间的配置只会在对应模块prefork启用时生效,其他类似。

<IfModule prefork.c>
# 服务器刚启动时的服务进程数
StartServers       8
# 最少空闲进程数
MinSpareServers    5
# 最大空闲进程数
MaxSpareServers   20
# MaxClients的上限值
ServerLimit      256
# 最大同时支持的请求数
MaxClients       256
# 每个子进程最多响应多少次请求
#达到此值后强行杀死进程,并重新启动一个新的子进程
MaxRequestsPerChild  4000
</IfModule>


<IfModule worker.c>
StartServers         4
MaxClients         300
# 最少空闲线程数
MinSpareThreads     25
# 最大空闲线程数
MaxSpareThreads     75 
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>

MPM

Multi Process Modules

几个MPM模型

  • mpm_winnt
  • prefork
    • 一个请求用一个进程响应
    • 稳定
    • 性能低
  • worker
    • 每个进程产生多个线程
    • 一个请求用一个线程响应
  • event
    • 一个进程处理过个请求

各个模型对应的启动脚本如下

/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker

各个MPM模型默认模块

[root@c2 conf.d]# httpd -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c
[root@c2 conf.d]# httpd.worker -l
Compiled in modules:
  core.c
  worker.c
  http_core.c
  mod_so.c
[root@c2 conf.d]# httpd.event -l
Compiled in modules:
  core.c
  event.c
  http_core.c
  mod_so.c

修改httpd的MPM

vim /etc/sysconfig/httpd

修改HTTPD配置即可

#HTTPD=/usr/sbin/httpd.worker
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,580评论 18 139
  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 3,702评论 0 10
  • Puppet理论定义: Puppet 是一个跨平台的集中化配置管理系统,它使用自有的描述语言,可管理配置文件、用户...
    属于你的世界阅读 951评论 0 2
  • http协议及Apache服务 http协议 什么是http? http全称为超文件传输协议(Hyper text...
    魏镇坪阅读 2,244评论 0 1
  • 你见过紫色的蒲公英吗? 紫色的羽毛和紫色的雪花? 你见过紫色的樱桃树吗? 紫色的头发和紫色的彩虹? 我见过的 我的...
    子遇子遇阅读 424评论 0 0