httpd系列-01-常用配置

配置文件概览

  • 主配置文件位置: /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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值