1.基础


安装:

[root@tri manual]# yum install httpd-manual httpd

源码编译:

configure配置选项
配置选项 默认值 备注
-prefix   服务器的根路径
--with-mpm event event/worker/prefork/winnt
-enable-ssl    

主程序/httpd:

httpd命令选项
选项 备注
-f /etc/httpd/conf/httpd.conf 指定配置文件
-v 查看版本
-l 编译到服务器的模块(不包括动态加载)
-M 查看静态、共享模块
-S 查看当前配置文件设置
-t 检查配置文件语法
-V httpd编译参数

配置指令:

httpd.conf
配置指令 备注
ServerRoot "/etc/httpd" 服务器的根路径
TimeOut 120 TCP握手超时
KeepAlive off HTTP持久连接
KeepAliveTimeout 5 持久连接超时(5秒)
MaxKeepAliveRequests 100 持久链接允许的请求数
ServerName www.tripartite.tech:8080 服务器主机名
DocumentRoot htdocs/ 默认请求目录
options Indexes FollowSymLinks

列出目录、服务器接受符号链接

none:啥都不设置

Includes:服务器端包含

DirectoryIndex  
AllowOverride  
Order allow,deny

访问控制

Allow,Deny

任何符合Allow将放行,任何符合Deny将拒绝;均不符合,将拒绝。

Deny,Allow

如果匹配Deny,请求拒绝,除非它也匹配Allow指令;均不符合,将放行。

Allow from all 访问控制(网络地址、ip地址、域名、域)
Deny from all  

例子:

# 拒绝某个ip访问
Order Allow,Deny
Allow from all
Deny from 115.120.85.152

2.用户指南


2.1.配置文件

  Apahce

HTTP服务的配置文件,是由一系列指令构成的纯文本文件。主配置文件通常叫做“httpd.conf”,路径在编译时指定,但是启动服务时可以被选项“-f”覆盖。还可以使用“Include”指令,加载其他配置文件。任何指令,可以出现在配置文件的任何位置。配置文件修改后,只有在其后启动服务才能生效。

  每个指令单独占用配置文件的一行,使用反斜线“\”可以把过长的一行配置拓展到下一行。拓展时,在反斜线后边不能存在空白字符。指令的参数由空白字符分割,参数自身含有空白字符时,需要用到双引号。配置文件中的指令不区分大小写,但是指令的参数是大小写敏感的。指令前的空白符是被忽略的,所有为了方便查看,可以进行缩进。

  配置文件接受变量的定义(Define),获取变量的值时跟shell脚本中一样($var)。使用Define定义的变量,会覆盖shell的环境变量。

  在不启动服务的情况下,可以通过命令判断配置文件语法的正确性。可以通过“f”选项在当前服务的配置文件外配置好配置文件并检验好后,在覆盖默认配置文件。

[root@Rsync httpd2.2.8]# bin/httpd -t
Syntax OK
[root@Rsync httpd2.2.8]# bin/httpd -t -f /home/work/httpd.conf
Syntax OK

2.1.1.模块编译

模块属性 说明
MPM

多处理模块

有且只能有一个该类模块。响应客户端的请求处理、调度。默认会自动编译,rpm包中常常是动态加载的,而源码包安装时默认是静态加载的。

Base 默认被编译
Extension 默认不会被编译,需要使用到该类模块时,常常需要重新编译。
Experimental 工具套件用到的模块,表示当前版本不再支持。
External 第三方提供的模块,需要时应重新编译。

  httpd是一个模块化的服务。httpd的核心服务只包含最基本的功能,扩展功能需要更多的模块来实现。当需要使用某个特殊的功能时,可能需要重新编译源代码来使用。不同的模块大致分为几类:MPM、Base、Extension、Experimental、External。

  如果httpd服务被编译为使用动态加载模块,则可以使用指令“LoadModule”在任何时候单独加载(随后编译的)模块。查看当前httpd服务编译了哪些模块,可以使用选项“l”。查看哪些模块被动态加载,可以使用选项“M”。

[root@Rsync httpd2.2.8]# bin/httpd -M
Loaded Modules:
 core_module (static)
...
[root@Rsync httpd2.2.8]# bin/httpd -l
Compiled in modules:
  core.c
...

  更多关于编译的信息,……(关于当前编译信息、可以用到的配合指令)

 # 编译时的配置信息:
 [root@Rsync httpd2.2.8]# bin/httpd -V
 Server version: Apache/ (Unix)
 Server built:   Aug   ::
 Server's Module Magic Number: 20051115:11
 Server loaded:  APR , APR-Util
 Compiled using: APR , APR-Util
 Architecture:   -bit
 Server MPM:     Prefork
   threaded:     no
     forked:     yes (variable process count)
 Server compiled with....
  -D APACHE_MPM_DIR="server/mpm/prefork"

 # 查看编译后可以使用到配置指令。
 [root@Rsync httpd2.2.8]# bin/httpd -L
 <Directory (core.c)
     Container for directives affecting resources located in the specified directories
     Allowed in *.conf only outside <Directory>, <Files> or <Location>
 <Location (core.c)
     Container for directives affecting resources accessed through the specified URL paths
     Allowed in *.conf only outside <Directory>, <Files> or <Location>
 <VirtualHost (core.c)
     Container to map directives to a particular virtual host, takes one or more host addresses
     Allowed in *.conf only outside <Directory>, <Files> or <Location>

2.1.2.指令范围

  指令位于主配置文件,将作用于整个服务。当需要缩小指令的范围时,可以将其嵌入“Directory”、“DirectoryMatch”、“Files”、“FilesMatch”、“Location”、“LocationMatch”这些“配置块”中。这些指令允许嵌套,实现更加精细的管理。

  httpd可以同时发布多个不同站点,这个功能常被称为“虚拟主机”。其中的指令将限制作用在<VirtualHost>配置块中,用来响应某个特定的站点。

  尽管大部分指令可以位于配置文件的任意位置,但是,关于控制进程创建的指令仅能出现在主配置上下文中。

2.1.3.分布式配置文件

  允许出现在目录的任意子目录中,用来针对目录进行分散管理。其语法与主配置文件相同。由于每个请求接收的时候都会读取该配置文件(.htaccess),所以在这些文件中所做的更改立即生效(无须重启服务)。

  默认文件名为“.htaccess”,可以通过指令“AccessFileName”重新指定。

[root@tri httpd-]# bin/httpd -L  |   "^Access"
AccessFileName (core.c)
    Name(s) of per-directory config files (default: .htaccess)
    Allowed in *.conf only outside <Directory>, <Files>, <Location>, or <If>

  由于是个分布式配置,可能会与主配置文件在某些时候相左,这时另外一个指令“AllowOverride”就粉墨登场了。

2.2.绑定地址、端口

  httpd启动的时候,默认监听所有的本地地址。但是需要指定监听某个确定的端口,或者地址,端口和地址(用在设置虚拟机的时候)。Listen指令设定服务接收请求在某个地址、端口。

  同时监听多个端口

Listen 80
Listen 8000

  监听不同的地址

Listen 192.0.2.1:80
Listen 192.0.2.5:8000

  监听IPv6地址,需要用到一对中括号。

Listen [::]:80

  Listen指令还有另外一个选项,用来指定监听的协议

Listen 192.170.2.1:8443 https

2.3.配置块(块容器)

  配置文件中的指令,可以作用于整个服务。也可以用来限定某个特定的目录、文件、主机、URL。配置块又叫做块容器。

 

2.3.1.配置块种类

  大致分为两类,仅仅在服务器启动时产生效果的块容器(封闭容器),和每次都会响应请求的块容器(开放块容器)。像以‘If’开头的系列,<IfDefine>,<IfModule>,<IfVersion>如果符合特定条件就一次性响应。

[root@tri httpd-]# bin/httpd -L  |   "^<If"
<IfModule (core.c)
    Container for directives based on existence of specified modules
    Allowed in *.conf anywhere and in .htaccess
    when AllowOverride isn't None
<IfDefine (core.c)
    Container for directives based on existence of command line defines
    Allowed in *.conf anywhere and in .htaccess
    when AllowOverride isn't None
--
<If (core.c)
    Container for directives to be conditionally applied
    Allowed in *.conf anywhere and in .htaccess
    when AllowOverride isn't None
--
<IfVersion (mod_version.c)
    a comparison operator, a version (and a delimiter)
    Allowed in *.conf anywhere [no per-dir config] and in .htaccess
    when AllowOverride isn't None

2.3.2.开放块容器

  我没有在apache httpd的说明文档中找到这个说法,“开发块容器”仅仅是我的个人理解。不在大家的讨论之列,你有好的建议我觉得可以接受,可以修改我的标题。

  开发块大多用在配置文件系统(文件块,httpd占用到的空间),网页空间(网页块,发布出去的空间,也可能包含一些数据库中的内容)。  文件块的代表,<Directory>、<Files>,其中指令作用于该目录、子目录、以及其中的文件。(实现一样的效果,也可以使用“分布式配置文件”)

<Directory /var/web/dir1>
    Options +Indexes
</Directory>
<Directory /var/web/dir1>
    <Files private.html>
        Require all denied
    </Files>
</Directory>

  网页块的代表,<Location>、<LocationMatch>……

<LocationMatch ^/private>
    Require all denied
</LocationMatch>
<Location /server-status>
    SetHandler server-status
</Location>

2.4.服务配置

  core提供的一些基本配置指令

2.4.1.服务识别

  ①ServerName

    服务标识符,重定向时需要用到。用于虚拟主机时,会覆盖主配置的设置项目。

ServerName www.example.com当设置中没有出现端口号时,会自动对应请求进来时使用的端口号

  ②ServerAdmin

    当访问出现错误时,返回给客户浏览器联系信息。

ServerAdmin www-admin@example.com

  ③ServerSignature

    用于在返回的页面下产生一行内容(httpd版本、服务器域名、端口),调试未知页面错误时较为有用。

ServerSignature On|Off|EMail默认Off

效果:

  ④ServerTokens

    用于返回错误时提供某些服务器的信息。

2.4.2.文件位置

  ①DocumentRoot

    httpd发布文件的根目录

  ②ErrorLog

    设定日志文件的名称(包含路径),不是绝对路径的时候,以ServerRoot为基础。默认“logs/error_log”(unix)。

  ③PifFile

    默认“logs/httpd.pid”

  ④ServerRoot

    服务安装的路径,路径在编译通过“prefix”确定。

2.5.SSL/TLS

  httpd使用了模块“mod_ssl”,该模块提供了OpenSSL库的接口。使httpd实现安全套接字层和传输层安全协议的强加密成为可能。
2.5.1.mod_ssl配置

  

httpd-2.4.6的更多相关文章

  1. 解决apache启动错误"httpd:Could not reliably determine..."

    启动apache遇到错误:httpd: Could not reliably determine the server's fully qualified domain name [root@serv ...

  2. Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details

    thinkphp 在Apache上配置启用伪静态,重启Apache1 restart 竟然失败了,报错 Job for httpd.service failed because the control ...

  3. Apache主配置文件httpd.conf 详解

    Apache的主配置文件:/etc/httpd/conf/httpd.conf 默认站点主目录:/var/www/html/ Apache服务器的配置信息全部存储在主配置文件/etc/httpd/co ...

  4. Linux httpd源码编译安装

    # wget http://apache.fayea.com/httpd/httpd-2.2.31.tar.bz2 去官网下载源码包 # mv httpd-.tar.bz2 /usr/local/sr ...

  5. centos7 apache httpd安装和配置django项目

    一.安装httpd服务 apache在centos7中是Apache HTTP server.如下对httpd的解释就是Apache HTTP Server.所以想安装apache其实是要安装http ...

  6. apache httpd服务器403 forbidden的问题

    一.问题描述 在apache2的httpd配置中,很多情况都会出现403. 刚安装好httpd服务,当然是不会有403的问题了.主要是修改了一些配置后出现,问题描述如下: 修改了DocumentRoo ...

  7. 手动配置三台虚拟机pacemaker+corosync并添加httpd服务

    创建三台虚拟机,实验环境:centos7.1,选择基础设施服务安装. 每台虚拟机两块网卡,第一块为pxe,第二块连通外网,手动为两块网卡配置IP.网关,使它们都能ping通外网并可以互相通过hostn ...

  8. apche启动错误|httpd.pid overwritten — Unclean shutdown of previous Apache run?

    APACHE启动成功,但无法接受任何请求,查看ERROR.LOG文件[warn] pid file /opt/apache/logs/httpd.pid overwritten - Unclean s ...

  9. 解决httpd: Could not reliably determine the server's fully qualified domain name

    解决方案: 用记事本打开 httpd.conf 将里面的 #ServerName localhost:80 注释去掉即可. 再执行 httpd 然后可以通过浏览器访问 http://localhost ...

  10. 关于httpd服务的安装、配置

    httpd是Apache超文本传输协议(HTTP)服务器的主程序.通常,httpd不应该被直接调用,而应该在linux系统中由 apachectl 调用.接下来我们将了解有关httpd服务的安装与配置 ...

随机推荐

  1. MySQL程序之mysql参数详解

    MySQL程序之mysql参数详解 mysql 是一个命令行客户程序,用于交互式或以批处理模式执行SQL语句 用法: mysql [OPTIONS] [database] 参数: 1.-? --hel ...

  2. centos 6.X 安装nodejs v6.11.0和npm

    下载nodejs wget -c https://nodejs.org/dist/v6.11.0/node-v6.11.0-linux-x64.tar.xz 安装gcc++ yum install - ...

  3. websocket连接的后台反向代理问题

    今天要介绍的问题,是一个相对来说比较经典的问题,问题表面看不是很复杂的问题,但是反映出的背后通信逻辑,其实还是比较有意义的. websocket协议是当前绝大部分浏览器都支持的长连接协议,是HTTP协 ...

  4. C/S,B/S的应用区别

    C/S,B/S的应用区别 C/S即大家熟知的客服机和服务器结构通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销 B/S结构即浏览器和服务 ...

  5. Winform Chart

    Chart图表解释说明: 第一步:使用VS创建Winform项目: 第二步:工具箱中拖入Chart控件: 第三步:所有控件拖入其他控件如下图所示: using System; using System ...

  6. @@identity与scope_identity()函数的区别

    @@IDENTITY 和SCOPE_IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值. SCOPE_IDENTITY 只返回插入到当前作用域中的值: @@IDENTITY 不受限于特 ...

  7. Map集合利用比较器Comparator根据Key和Value的排序

    TreeMap排序 根据Key进行排序 Map的根据key排序需要用到TreeMap对象,因为它是默认按照升序进行输出的,可以使用比较器compareTo对它进行降序排序,Comparator可以对集 ...

  8. vue中为对象添加值的问题

    demo: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  9. 【nginx】之常用命令

    查看版本号: nginx -s reload  :修改配置后重新加载生效 nginx -s reopen  :重新打开日志文件nginx -t -c /path/to/nginx.conf 测试ngi ...

  10. 求1~n整数中1出现的次数(《剑指offer》面试题43)

    题意: 给定一个整数n,求1~n这n个整数中十进制表示中1出现的次数. 思路: 方法1:最直观的是,对于1~n中的每个整数,分别判断n中的1的个数,具体见<剑指offer>.这种方法的时间 ...