httpd基本配置

一、常用配置

1、修改监听的IP和Port

 Listen[IP:]PORT
  省略ip表示监听本机所有IP;Listen可重复出现多次;

2、持久连接

PersistentConnection:

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

如何断开?

数量限制:100

时间限制:可配置

副作用:对并发访问量较大的服务器,持久连接功能会使用有些请求得不到响应;

折衷:使用较短的持久连接时间;

httpd-2.4支持毫秒级持久时间;

非持久连接

KeepAlive {On|Off}   #默认为关闭

MaxKeepAliveRequests #

KeepAliveTimeout #

测试:

telnetHOSTPORT

GET/URLHTTP/1.1

Host:HOSTNAMEorIP

3、MPM参数

MultipathProcessModule:多道处理模块

prefork,worker,event

<IfModule prefork.c>
StartServers       8    #服务启动时启动的子进程数
MinSpareServers    5    #最少空闲子进程数
MaxSpareServers   20
ServerLimit      256    #同时启动的子进程数上限
MaxClients       256    #同时服务的客户端数上限(支持的并发数上限)
MaxRequestsPerChild  4000   #每个子进程在其生命周期内处理的请求数上限
</IfModule>

<IfModule worker.c>
StartServers         4   #服务启动时启动的子进程数
MaxClients         300
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25    #每个子进程可启动的线程数
MaxRequestsPerChild  0    #每个子进程可处理的请求数,0表示无限制
</IfModule>

4、DSO

配置指令实现模块加载
LoadModule <mod_name> <mod_path>
#要卸载某个模块直接将其注释掉即可,不用重读配置文件就可立即生效;模块路径为相对于ServerRoot而言的路径
显示DSO动态装载的模块:
# httpd -D DUMP_MODULES
Loaded Modules:
 core_module (static)
 mpm_prefork_module (static)
 http_module (static)
 so_module (static)
 auth_basic_module (shared)
 auth_digest_module (shared)
 authn_file_module (shared)
 authn_alias_module (shared)
 ...
# httpd -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c
# httpd.worker -l
Compiled in modules:
  core.c
  worker.c
  http_core.c
  mod_so.c

5、定义‘Main‘server的文档页面路径

DocumentRoot "/path/to/somefile"
文档路径映射:
DocumentRoot 指向的路径为URL路径的起始位置;
DocumentRoot "/var/www/html"   #默认为这个位置
test/index.html-->http://HOST:PORT/test/index.html

6、站点访问控制

可基于两种类型的路径指明对哪些资源进行访问控制

文件系统路径:
<Directory "/path/to/somewhere">
...
</Direcotry>
<File [~] "/path/to/somewhere">
...
</File>
基于URL访问路径做访问控制:
<Location"">
...
</Location>
#另外,路径可做模式匹配,但若非迫不得已不建议使用
#如果即能使用Diretoory控制,也能使用Location控制,建议使用Directory

7、Directory中“基于来源地址”实现访问控制

(1)Options
所有可用特性:Indexes,Includes,FollowSymLinks,SymLinksifOwnerMatch 
         ExecCGI,MultiViews,None,All
Indexes:索引;在无默认主页面又无欢迎页时,将所有资源以列表形式呈现给用户。
     危险,慎用;在选项前添加减号即为禁用。如-Indexes
FollowSymlinks:允许跟踪符号链接文件;
# vim /etc/httpd/conf/httpd.conf
<Directory "/www/html">
    Options Indexes FollowSymLinks   #默认是开启的
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
(2)AllowOverride
支持在每个页面目录下创建.htaccess用于实现对此目录中资源访问时的访问控制功能;
.htaccess文件会影响httpd的性能
(3)基于IP做访问控制机制
    Order:检查次序
        Order allow,deny
        Allow form 192.168.10.0/24
            form后面能够接受的地址格式:
                IP,Network Address
                网络地址格式较为灵活:
                    172.16
                    172.16.0.0
                    172.16.0.0/16
                    172.16.0.0/255.255.0.0

8、定义默认主页面

DirecotryIndex index.htm lindex.html.var

9、日志设定

ErrorLog "/path/to/error_log"   #错误日志,路径为相对于ServerRoot而言的路径
LogLevel {debug|info|notice|warn|error|crit|alert|emerg}
   指定级别及比其更高级别的信息都会被记录      
LogFormat 格式 格式名
  %h: 客户端地址
  %l: 远程登录名,通常为-
  %u: 认证时输入用户名,没有认证时为-
  %t: 服务器收到 用户请求时的时间
  %r:请求报名的起始行
  %>s: 响应状态码
  %b: 响应报文的长度,单位是字节
  %{HEADER_NAME}i: 记录指定首部对应的值
例如 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined    
#格式中若要使用引号则要使用反斜线转义
    CustomLog "/path/to/access_log" LogFormat_Name

10、路径别名

实现URL路径的映射,从而所访问的资源不再依赖于站点根目录。

Alias /URL/ "/path/to/somewhere/"

例如 Alias /images/ "/www/tupian/" #后面映射的路径是绝对路径,而不是相对于站点根目录而言的路径;此时若站点根目录(以/var/www/html为例)下也有一个images目录,那么将无法访问/var/www/html/images中的资源,因为images已被别名征用

# mkdir test hello
# cat test/a.html 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
# cat hello/b.html 
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
# vim /etc/httpd/conf/httpd.conf
Alias /test/ "/www/html/hello/"
# service httpd restart
停止 httpd:                                               [确定]
正在启动 httpd:                                           [确定]

# curl http://localhost/test/a.html
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /test/a.html was not found on this server.</p>
<hr>
<address>Apache/2.2.15 (CentOS) Server at localhost Port 80</address>
</body></html>
# curl http://localhost/test/b.html
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

11、设定默认字符集

    AddDefaultCharset UTF-8
    字符集:GBK,GB2312,GB18030

12、基于用户的访问控制

用户认证类型:
  基本认证:Basic,明文发送
  摘要认证:digest
虚拟用户:仅用于访问某服务或获取某资源的凭证;
  账号和密码的存储机制:
    文本文件:.htpasswd
    SQL数据库
    dbm:数据库引擎,提供API
    ldap:
案例:基于文件做访问控制
(1)基于用户进行认证
    <Directory />
        Options none
        AllowOverride AuthConfig
        AuthType Basic
        AuthName "admin area"
        AuthBasicProvider file
        AuthUserFile /etc/httpd/conf/.htpasswd
        Require valid-user
    </Directory>
    # Require valid-user:文件中所有用户均可访问
    # Require user USERNAME,... 指定用户访问
(2)提供认证文件
    htpasswd [option] passwdfile username
    选项:
    -c:创建一个passwdfile,如果passwdfile已经存在,那么它会重新写入并删除原有内容
    -m:以md5的格式编码存储用户的密码信息
    -s:sha1加密用户密码;
    -D:删除指定用户
(3)基于组认证
    <Directory />
        Options none
        AllowOverride AuthConfig
        AuthType Basic
        AuthName "admin area"
        AuthBasicProvider file
        AuthUserFile /etc/httpd/conf/.htpasswd
        AuthGroupFile /etc/httpd/conf/.htgroup
        Require group GROUP_NAME
    </Directory>
    组文件(.htgroup)格式    组名:user1 user2 user3
例如:
# cd /var/www/html
# mkdir admin
# cat admin/admin.html  
The user is admin.  
# vim /etc/httpd/conf/httpd.conf
    <Directory "/var/www/html/admin">
    Options none
    AllowOverride AuthConfig
    AuthType Basic
    AuthName "admin area"
    AuthBasicProvider file
    AuthUserFile /etc/httpd/conf/.htpasswd
    Require valid-user
    </Directory>
# htpasswd -c -m /etc/httpd/conf/.htpasswd bjwf #创建第一个用户时必须创建文件
New password: 
Re-type new password: 
Adding password for user bjwf
# htpasswd -m /etc/httpd/conf/.htpasswd tom   #创建第二个用户
New password: 
Re-type new password: 
Adding password for user tom
# service httpd restart

13、虚拟主机

有三种实现方案:
  基于ip:为每个虚拟主机准备至少一个ip地址;
  基于port:为每个虚拟主机准备至少一个专用port;实践中很少使用;
  基于hostname:为每个虚拟主机准备至少一个专用hostname;
可混合使用上述三种方式中任意方式;
注意:一般虚拟主机莫与中心主机混用,所以,要使用虚拟主机,先禁用中心主机;
禁用中心主机:注释DocumentRoot
每个虚拟主机都有专用配置:
<VirtualHost"IP:PORT">
SeverName
DocumentRoot""
</VirtualHost>
ServerAlias:虚拟主机的别名;
ErrorLog
CustomLog
<Directory"">
</Directory>

示例1:基于ip
  <VirtualHost172.16.100.6:80>
    ServerName web1.magedu.com
    DocumentRoot"/vhosts/web1/htdocs"
  </VirtualHost>

  <VirtualHost172.16.100.7:80>
    ServerName web2.magedu.com
    DocumentRoot "/vhosts/web2/htdocs"
  </VirtualHost>
示例2:基于port
  <VirtualHost172.16.100.7:80>
    ServerNameweb2.magedu.com
    DocumentRoot"/vhosts/web2/htdocs"
  </VirtualHost>

  <VirtualHost 172.16.100.7:8080>
    ServerName web3.magedu.com
    DocumentRoot "/vhosts/web3/htdocs"
  </VirtualHost>
示例3:基于hostname
  <VirtualHost 172.16.100.6:80>
    ServerName web1.magedu.com
    DocumentRoot "/vhosts/web1/htdocs"
  </VirtualHost>

  <VirtualHost 172.16.100.6:80>
    ServerName web2.magedu.com
    DocumentRoot "/vhosts/web2/htdocs"
  </VirtualHost>

  <VirtualHost 172.16.100.6:80>
    ServerName web3.magedu.com
    DocumentRoot "/vhosts/web3/htdocs"
  </VirtualHost>

示例:

# mkdir /var/www/html/{a.com,b.net,c.org} -pv
mkdir: 已创建目录 "/var/www/html/a.com"
mkdir: 已创建目录 "/var/www/html/b.net"
mkdir: 已创建目录 "/var/www/html/c.org"
# echo a.com > /var/www/html/a.com/index.html
# echo b.net > /var/www/html/b.net/index.html
# echo c.org > /var/www/html/c.org/index.html

14、内置的status页面

<Location/server-status>

SetHandlerserver-status

Orderdeny,allow

Denyfromall

Allowfrom172.16

</Location>

实现:基于账号实现访问控制

时间: 2024-08-12 04:19:41

httpd基本配置的相关文章

linux服务之http协议和httpd的配置(一)

http协议和httpd的配置 URL:Unifrom Resource Locator URL方案:scheme 服务器地址:ip:port 资源路径: http://www.magedu.com:80/bbs/index.php, https:// 基本语法: <scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<fra

linux命令:httpd 安装配置 elinks htpasswd

LAMP:L=linux  A=apache网页服务器  M=mysql数据库服务器  P=php应用服务器 httpd:  事先创建进程,按需维持适当的进程,模板化设计,核心比较小,各种功能都模块添加, 支持运行配置,支持单独编译模块.   httpd -t用于检测httpd.conf主配置文档是否存在语法错误  [[email protected] conf]# httpd -t Syntax OK       检测配置文档语法正常 elinks:linux系统中打开纯文本网页界面.   参

Linux之Web服务(2)Httpd服务配置之一

Linux之Web服务(2)Httpd服务配置之一 Apache HTTP Server Apache HTTP 服务器,简称Apache,是非常留下的Web服务器软件.通常和脚步语言比如PHP,数据库MySQL一起工作,合成为LAMP栈(Linux, Apache, MySQL, PHP). 当然流行的Web服务器还有nigix,但是nigix虽然轻量级很稳定,但是功能并不如Apache HTTP功能丰富,并且现在的Apache HTTP还支持模块化功能,及可以开发自己的功能模块并加入到此We

Linux之Web服务(2)Httpd服务配置之二

Linux之Web服务(2)Httpd服务配置之二 前言 在上一篇通过一些简单的案例或说明来介绍了部分关于Httpd2.4中httpd.conf配置文件中的配置选项及对应的功能.主要是对访问控制和在处理对指定目录或文件进行访问控制的一些安全问题性的处理.但是一直没有提到访问控制的具体讲解,本篇列出访问控制的具体使用选项和功能,以及其它高级配置. 1.Httpd2.4 文档访问授权具体参数 前提:文档访问授权选项配置只适合在以下标签中生效: <Directory >  <FIles>

Linux之Web服务(2)Httpd服务配置之三

Linux之Web服务(2)Httpd服务配置之三 前言 默认安装的Httpd服务一般只有默认的一个DocumentRoot节点配置,及一个站点文档资源存放根目录,但是在生产环境中需要有多种分类的资源,比如用于外部访问和内部访问,又或者是资源本身类型,比如分别用来存放一些文档.图片.单项加密算法文件等,为了更好分配站点管理的资源,Httpd服务提供了VirtualHost及虚拟主机的配置,可以在一个Httpd服务下模拟进行部署多个站点,这样不同的站点进行不同的配置,更方便进行分布式管理. Vir

Linux之Web服务(2)Httpd服务配置之四

Linux之Web服务(2)Httpd服务配置之四 前言 接上一篇的虚拟主机,本片主要介绍虚拟主机的一些搭建和部署,本篇通过一个具体的案例来显示虚拟主机的作用和特性. 案例功能介绍: (1) 准备DNS解析3个域名或者添加/etc/hostst/3条主机名IP档案,解决域名解析 (2) 基于主机名实现三个虚拟主机 (3) 每虚拟主机使用独立的访问日志和错误日志 (4) 在第二个虚拟主机上提供/status: (5) 在第三个虚拟主机提供路径别名/bbs,访问其它文件系统路径: (6) 第三个虚拟

apache httpd.conf配置及php.ini配置建议

1)     php.ini配置 扩展配置 (注意观察extention_dir路径是否与物理路径一致) extension=php_gd2.dll 几乎是必开,这个图形处理扩展被广泛地应用在上传头像处理.在线照片处理.验证码等等地方. extension=php_mbstring.dll 几乎也是必开,没有他,多字节字符串(如中文)截取将会变得异常的复杂. extension=php_pdo_mysql.dll PHP5.3默认已经集成了PDO(如果低于5.3的话应该会有extension=p

马哥教育第二十一天httpd高级配置详解、编译安装

1.httpd.conf配置文件                 ★设置默认字符集                         AddDefaultCharset ★CGI脚本路径                         ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"指定cgi路径别名                               bash写CGI脚本:                                  所有

【转】Apache 的 httpd.conf 配置详解

Apache 的 httpd.conf 配置详解 原文链接 http://www.php100.com/html/webkaifa/apache/2009/0418/1192.html ServerRoot /usr/local ServerRoot用于指定守护进程httpd的运行目录,httpd在启动之后将自动将进程的当前目录改变为这个目录,因此如果设置文件中指定的文件或目录是相对路径,那么真实路径就位于这个ServerR oot定义的路径之下. ScoreBoardFile /var/run

第二十天 TCP 及socket通信原理、http协议及web服务、httpd核心配置详解

一.TCP及socket通信原理详解 二.http协议及web服务原理(一) 三.http协议及web服务原理(二) 四.httpd核心配置详解 1.tcp.udp是一种传输协议,实现进程地址标记,套接字是一个虚拟设备,用来表明主机上的某个进程      众所周知:0-1023:管理员才有权限使用,永久地分配给某应用使用(由IANA分配)      注册端口:1024-41951:只有一部分被注册,分配原则上非特别严格.      动态端口或私有端口:41952-65535:由内核分配临时端口,