http的应用

[TOC]

1. httpd-2.4

新特性:

  • (1) MPM -支持-> DSO, 模块形式按需加载
  • (2) 支持event, 异步读写, 每模块, 目录各自配置日志
  • (3) 每请求配置, 增强正则, 毫秒级keep ailved timeout
  • (4) 支持用户自定义变量, 去除NameVirualHost

新模块:

mod_proxy_fcgi, mod_ratelimit, mod_remoteip

修改配置:

  • 不再支持order, deny, allow来做基于IP的访问控制

2. 安装httpd-2.4


Centos 6:

  • 提供apr-1.3.9, apr-util-1.3.9(与httpd-2.4要求不匹配)

  • httpd-2.4依赖apr (1.4级以上版本), apr-util (1.4级以上版本), [apr-icon]

    • apr: apache portable runtime, 阿帕奇运行时环境(阿帕奇虚拟机)

    • apr-util: 此为apr补充的工具组件

因此, Centos 6上想安装httpd-2.4, 只能编译安装, 具体步骤如下:

(1) 准备好1.4级以上版本的apr和apr-util

(2) 安装好开发环境

yum -y install "Development Tools" "Server Platform Development" pcre-devel

(3) 编译安装

# (3.1) apr
./configure --prefix=/usr/loca/apr     # 避免覆盖旧版 
make && make install
# (3.2) apr-util
./configure --prefix=/usr/local/apr-util --with=/usr/local/apr
    # --with=/usr/local/apr 针对某个包执行编译
make && make install
# (3.3) httpd-2.4
groupadd -r apache && useradd -r -g apache apache
./configure --prefix=/usr/local/apache 
            --sysconf=/etc/httpd24   \ # 设定配置文件的位置
            --enable-so              \ # 支持动态模块 
            --enable-ssl             \ # 支持ssl
            --enable-cgi             \ # 支持cgi机制
            --enable-rewrite         \ # 支持URL重写
            --with-zlib              \ # 压缩库
            --with-pcre              \ # 支持perl扩展正则
            --with-apr=/usr/local/apr 
            --with-apr-util=/usr/local/apr-util 
            --enable-modules=most    \ # 支持大多数常用模块, most可换为all
            --enable-mpms-shared=all \ # 支持mpm的共享模块编译机制
            --with-mpm=prefork       \ # 设定默认使用mpm的机制

make && make install

(4) 启动服务

apachectl


Centos 7:

默认提供httpd-2.4版本

配置文件:

  • 主:
    • /etc/httpd/conf/httpd.conf
  • 模块:
    • /etc/httpd/conf.modules.d/*.conf
  • 辅助:
    • /etc/httpd/conf.d/*.conf

mpm:

  • 以DSO机制提供, 配置文件/etc/httpd/conf.modules.d/mpm.conf
  • 配置完成后重载服务: systemctl reload httpd

直接给出的apachectl是rpm包生成的, 编译安装httpd-2.4需如此:

/usr/local/apache/bin/apachectl start
vim /etc/profile.d/httpd.sh    # 自行将脚本文件的路径设定到PATH中
    export PATH=/usr/local/apache/bin:$PATH
source /etc/profile.d/httpd.sh # 重载配置文件

具体配置:

(1) 切换使用 MPM

LoadModule mpm_NAME_module modules/mod_mpm_NAME.so
    # NAME: prefork, worker, event

(2) 修改'Main' server的DocumentRoot

(3) 基于IP的访问控制方法

# (3.1) 允许所有主机访问:
Require all granted
# (3.2) 拒绝所有主机访问:
Require all deny
# (3.3) 控制特定IP访问 (指定的IP类型与http-2.2方式相同)
Require ip IPADDR     # 允许
Require not ip IPADDR # 拒绝
# (3.4) 控制特定主机 (HOSTNAME可为FQDN特定主机或Domain域内所有主机)
Require host HOSTNAME
Require not host HOSTNAME
    # 实例:
    
        Require all granted # 上下位置无所谓
        Require not ip 10.252.46.165
    

(4) 虚拟主机

支持基于IP, Port, FQDN的虚拟主机, 同时基于FQDN的虚拟主机不再需要NameVirtualHost指令

(5) ssl

启用模块: LoadModule ssl_module modules/mod_ssl.so

(6) Centos 6 服务脚本

cp /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd24
vim http24               # 自行按需配置启动脚本
chkconfig --add httpd24
chkconfig --list httpd24 # 查看是否配置好
chkconfig httpd24 on
service httpd24 start

reference: 马哥教育视频

你可能感兴趣的:(http的应用)