httpd服务详解及基于openssl的使用

httpd常见特性

1.事先创建空闲进程。

2.按需维持适当的进程。

3.使用模块化设计,核心比较小,各种功能都以模块方式添加。

4.支持运行时配置,支持单独编译模块。

5.支持多种方式的虚拟主机配置。

6.支持https协议,通过mod_ssl模块实现。

7.支持用户认证

8.支持基于IP或主机名的ACL

9.支持基于每目录的访问控制。

10.支持URL重写。

MPM(Mulit Path Modules)多道处理模块。

mpm_winnt windows上专用的线程处理机制。

perfork

预先生成多个进程,一个进程响应单个请求。

稳定性高,性能差。

单个进程崩溃不会影响到其他进程,但是会消耗大量的系统资源,特别是并发处理时要进行大量的进程切换。

worker

启动多个进程,每个进程下生成多个线程响应多个请求。单个线程响应单个请求。

效率高,多个线程共享一个资源。但是会产生资源竞争问题。目前在linux上性能不如perfork高。

event

基于事件驱动,一个进程同时处理多个请求。一个进程响应多个请求。

httpd更改所使用的模型,修改/etc/sysconfig/httpd。

虚拟主机:

物理服务器只有1个。

web程序只有1个。

却可以服务多个不同的站点。

常见类型:

默认主机,若使用此必须定义在第一个。

_default_:PORT

_default_:* 监听任意端口

_default_:80 监听80端口

基于IP的虚拟主机

IP1:PORT

IP2:PORT

基于端口的虚拟主机

IP:PORT1

IP:PORT2

基于域名的虚拟主机

IP:PORT

*:PORT 全部主机都监听同一个端口

ServerName不同

httpd:

安装:

httpd受SElinux控制的,所以需要先设置为permssive。

1.rpm包

#yum -y install httpd

2.源码编译

相关文件目录:

/usr/sbin/httpd 执行进程服务

主导进程(master process)

属主为root,属组为root。第一个进程,负责维护空闲进程。

工作进程(worker process)

属主为apache,属组为apache。

/etc/rc.d/init.d/httpd 服务脚本

启动后占用TCP的80端口,https占用TCP的443端口。

/etc/sysconfig/httpd

为httpd服务脚本的配置文件。

/etc/httpd

以rpm包安装后的工作根目录,相当于程序的安装目录。

/etc/httpd/conf 配置文件目录

/etc/httpd/conf/httpd.conf 主配置文件

/etc/httpd/conf.d/*.conf

主配置文件的组成部分。在主配置文件中使用include包含此目录下的文件

welcome.conf 欢迎界面的配置文件。

/etc/httpd/modules

模块路径,此路径为链接,指向/lib/httpd/。

/etc/httpd/logs

日志目录,此路径为链接,指向/var/log/httpd/。

访问日志:access_log

客户端发起的请求及服务端响应的结果。

错误日志:err_log

错误的访问、服务器错误信息等。

/var/www/html 静态页面所在路径

/var/www/cgi-bin

动态内容所在路径,CGI:Common Gateway Interface 通用网关接口。

/var/www/error/*

错误页面文件位置,可以自定义。

/etc/sysconfig/httpd

#HTTPD=/usr/sbin/httpd.worker 默认是使用perfork模式。若修改则取消注释并修改。

/etc/httpd/conf/httpd.conf

指令结构:

指令(directive) 值(value)

指令不区分字符大小写,值则根据需要进行是否区分大小写。

全局配置(Global Enviroment)

Servertokens OS|... 指定显示httpd显示详细信息的程度。

Serverroot "/etc/httpd" 指定httpd的根路径。

PidFile run/httpd.pid 指定pid文件的路径,此路径为相对路径。

Timetou 120 指定TCP三次握手建立连接,第一次握手成功成功等待第二次确认的超时时间。

KeepAlive on 是否启动长连接。

MaxKeepAliveRequests 100 指定长连接响应的个数,0表示无限制。

KeepAliveTimeout 15 长连接的断开时间为15秒。

<IfModule perfork.c>

StartServers 8 启动服务后生成空闲进程个数。

MinSpareServers 5 最少空闲进程,保证服务运行中最少空闲进程的个数。如不够则生成新空闲进程。

MaxSpareServers 20 最大空闲进程,如果空闲进程大于设定,则关闭多余进程。

ServerLimit 256 指定MaxClient的上限值。

MaxClient 256 最大客户端数,允许同时连接服务器的客户端个数。

MaxRequestsPerChild 4000 单个进程最大响应次数。超过此则结束进程重新生成。

</IfModule>

<IfModule worker.c>

StartServers 2 启动的进程数。

MaxClient 150 最大客户端数。

MinSpareThreads 25 最小空闲总线程数。

MaxSpareThreads 75 最大空闲总线程数。

TheardsPerChild 25 每个进程生成的最大线程数。

MaxRequestsPerChild 0 每个进程的最大响应数。这里因为使用线程,所以无法限定。

</IfModule>

Listen 80 指定监听端口,可监听多端口。

LoadModule MODNAME MODDIR 需要加载加载模块,指定模块名称和路径。

Include conf.d/*.conf 将该目录下的.conf文件的配置信息包含进来。

User apache 指定普通进程的属主。

Group apache 指定普通进程的属组。

中心服务器配置(‘Main‘ server configuration)

ServerAdmin MAILADDR 定义管理员的邮箱地址。

#ServerName SSERVERNAME:PORT 若注释掉,则则启动服务时会尝试反解析主机名,如果解析不到则报错。

DocumentRoot "/var/www/html" 指定网页文件存放位置。

<directory "/var/www/html">

Options OPTION

None 不支,km持任何选项。

Indexes 允许以目录索引的方式显示文件。一般用作提供文件下载的场景下使用。

FollowSymLinks 允许跟随符号链接,允许访问符号链接对应的源文件。会带来安全性问题,一般建议不使用。

Includes 允许执行服务器端包含,允许执行SSI格式网页文件,会带来安全问题,一般建议不使用。

SymLinksifOwnerMatch 对FollowSymLinks更进一步限定,允许执行符号链接,但是链接的的属主要同执行httpd进程的用户相同。一般建议不使用

ExecCGI 允许执行CGI脚本。

MultiViews 允许多视图。根据客户端来源的语言和文字判定显示对应的网页。

ALL 启用所有选项。

AllowOverride OPTION 允许覆盖ACL

All

None

AuthConfig 使用自定义的账号验证文件进行验证。

Limit

FileInfo

Order allow,deny 指定ACL的模式为白名单(allow,deny)或者是黑名单(deny,allow)。

Allow form all 定义ACL列表,基于IP、主机名、网络地址

#Deny from

AuthType Basic 指定认证类型

AuthName "DESCRIPTION" 显示描述信息

AuthUserFile DIR 指定认证用户账号文件存放路径,例如/user/local/apache/passwd/paaaswords

AuthGroupFile DIR 指定认证用户组组文件路径,文件格式为GROUPNAME:USER1 USER2 ...

Require all granted 允许全部访问

Require all denied 全部禁止访问

Require user USERNAME 允许单个用户。

Require group GROUPNAME 允许某个组中的用户。

Require valid-user 认证用户账号中出现的账号都允许登陆

</directory>

DiretcoryIndex index.html index.html.var 定义默认显示的访问页面,优先级从左自右匹配。

AccessFileName .htaccess 定义基于每目录的访问控制。

<file ~ "^\.ht"> 匹配以.ht开头的文件

Order allow,deny

Deny from all

</file>

TypeConfig /etc/mime.types 指定定义mime类型的文件

DefaultType text/plain 指定默认类型

HostnameLookups off 是否在日志中记录主机名的反解析信息

Errorlog logs/error_log 指定错误日志文件

LogLevel LEVEL 指定日志级别

LogFormat FORMAT TYPENAME 指定日志格式和名称

%h 远程主机地址

%l 远程主机登录名称

%u 登陆网站认证的用户名

%t 日志事件产生的时间

%r 请求报文的第一行

%s 最后一次请求的状态码

%b 相应报文的大小

%{Foobar}i 对应Foobar指定行的内容

CustomLog logs/access_log combind 定义访问日志文件以及要应用的日志格式。

Alias /ALIASNAME "DIR" 为某个路径设定别名。

虚拟主机(Virtual Hosts)

ServerName SERVERNAME

ServerAlias HOSTNAME  指定虚拟主机的主机别名

ScriptAlias SCRIPTNAME 指定脚本的别名

<Location "URLDIR"> 定义访问URL地址的权限方法等。

SetHandler server-status 实现匹配到的文件由对应的处理器进行处理动作。

Order Deny,allow

Deny form all

Allow from .foo.com

</Location>

<VirtualHost HOST> 这里HOST根据类型不同有不同写法,具体看上边对虚拟主机的相关。

</VirtualHost>

#DocumentRoot 若要启动虚拟主机则要在主服务器配置中禁用次项。

或者在/etc/httpd/conf.d/下新建单独的配置文件。

例如,创建虚拟主机,使用3种模式,同时分离日志,启动访问策略,禁止192.168.1.4访问。iaa.com访问的时候需要提供账号密码。:

#cd /etc/httpd/conf.d

#vim vh.conf

<VirtualHost 192.168.1.3:80>

ServerName www.test.com

DocumentRoot "/www/test.com"

CustomLog /var/log/httpd/test.com/access_log combind

</VirtualHost>

<VirtualHost _default_:80>

ServerName _default_

DocumentRoot "/www/default80"

</VirtualHost>

<VirtualHost 192.168.1.4:80>

ServerName abc.iaa.com

DocumentRoot "/www/iaa.com"

CustomLog /var/log/httpd/iaa.com/access_log combind

<Directory "/www/iaa.com">

Options none

AllowOverride authconfig

AuthType Basic

AuthName "loggin"

AuthUserFile "/etc/httpd/.htpasswd"

Require valid-user

</Directory>

</VirtualHost>

<VirtualHost 192.168.1.4:8080>

ServerName www.ibb.net

DocumentRoot "/www/ibb.net"

CustomLog /var/log/httpd/ibb.net/access_log combind

</VirtualHost>

NameVitualHost 192.168.1.4:80

<VirtualHost 192.168.1.4:80>

ServerName www.idd.gov

DocumentRoot "/www/idd.gov"

CustomLog /var/log/httpd/idd.gov/access_log combind

<Directory "/www/idd.gov">

Opitons none

AllowOverride none

Order deny,allow

Deny from 192.168.1.14

</Diretctor>

</VirtualHost>

#cd /etc/httpd/conf/

#mkdir -pv /www{test.com,iaa.com,bii.net,idd.gov,default80}

#vim /www/test.com/index.html

#vim /www/iaa.com/index.html

#vim /wwww/ibb.net/index.html

#vim /wwww/idd.gov/index.html

#vim /wwww/default80/index.html

#ip addr add 192.168.1.4/24 device eth0

#vim httpd.conf

Listen 8080

#vim /etc/hosts

#cd /var/log/httpd/

#mkdir test.com iaa.com ibb.net idd.gov

#htpasswd -c -m /etc/httpd/.htpasswd tom

#htpasswd -m /etc/httpd/.htpasswd jerry

#systemclt restart httpd

注意:基于主机的访问,若直接输入ip地址,则会先显示www.iaa.com。即先返回配置文件中第一个符合的主机。

#httpd [OPTION]

[OPTION]

-l 列出当前支持模块。

-t 检测配置文件语法正确性。

-M 显示所有额外装载的模块。

#httpd.work 显示使用worker模型下支持的模块。

#httpd.envet 显示使用event模型下支持的模块。

#elinks [OPTION] URL 纯文本界面下的浏览器

[OPTION]

-dump 显示网页后立即退出,不在进入交互模式。

-source 显示网页源代码

#htpasswd [OPTION] FILE USERNAME [PASSWORD] 创建AuthConfig用户认证文件。

[OPTION]

-c 创建文件,只有第一次创建时使用,若文件已存在则会被清空

-n 用户的密码以md5方式存放的

-D 删除用户

压力测试工具:

ab

LoadRunner

SElinux:

配置文件:

/etc/selinux/config

/etc/sysconfig/selinux

#getenforce 查看SElinux状态

#setenforce NUM 临时设置SELinux状态

NUM

0 permissive

1 enforcing

FireWall

#systemctl stop firewalld 停止防火墙

#systemclt disable firewalld 禁用防火墙服务

基于openssl的httpd服务配置

mod_ssl ssl的模块包,使用yum安装httpd必须要安装此包。

证书服务器上:

生成私钥:

#cd /etc/pki/CA

#(umask 077;openssl genrsa -out private/cakey.pem 2048)

编辑证书默认信息:

#vim ../tls/openssl.cnf

生成自签证书:

#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365

修改配置文件:

#vim ../tls/openssl.cnf

dir=/etc/pki/CA

#mkdir certs crl newcerts 根据配置文件的内容创建相关的文件夹和文件

#touch index.txt

#echo 00 > serial

签署证书:

#openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -dyas 3650

httpd服务器上:

放置证书:

#cd /etc/httpd/

#mkdir ssl

#cd ssl

#(umask 077;openssl genrsa 1024 > httpd.key )

#openssl req -new -key httpd.key -out httpd.csr 生成证书请求。

Common Name: 要使用证书的虚拟主机的名称。

将生成的证书请求文件复制到证书服务器:

#scp httpd.scr [email protected]:/tmp

将颁发的证书复制到本机:

#scp 192.168.100.4:/tmp/httpd.crt ./

#ll

httpd.crt

httpd.csr

httpd.key

配置ssl模块配置文件:

#cd /etc/httpd/conf.d/

#vim ssl.conf

SSLEngine on 启用ssl功能

SSLCertificateFile /etc/httpd/ssl/httpd.crt 指定ssl证书文件

SSLCertificateKeyFile /etc/httpd/ssl/http.key 指定私钥文件。

验证效果:

使用https://SERVER 访问即可查看证书信息

时间: 2024-11-03 22:25:54

httpd服务详解及基于openssl的使用的相关文章

HTTPD服务详解

HTTPD服务详解 目录 一.httpd的程序版本 二.httpd的特性 三.httpd的功能特性 四.httpd使用 1.httpd的安装 2.程序环境 Httpd-2.2 (Centos6) http-2.4 (Centos7) 五.http配置相关说明 1.修改监听的ip和port 2.持久连接 3.MPM 4.DSO配置指令模块加载 5.定义Main'server文档页面路径 6.站点访问控制 文件系统路径 URL路径 7.<Directory> 中基于源地址实现访问控制 Option

CentOS DNS服务详解与基于bind的智能DNS

Linux中通常使用bind来实现DNS服务器的架设 安装bind 安装DNS服务软件Bind和相应工具包 #yum install bind bind-utils -y #service named start Generating /etc/rndc.key: [ OK ] Starting named: [ OK ] 资源记录类型 起始授权结构(SOA):指出当前区域内谁是 主DNS服务器 主机(A): 将域名FQND映射到IP 正向解析 别名(CNAME): 将A记录指向的域名 指向 另

yum httpd安装详解

yum httpd安装详解: 1.安装httpd yum -y install httpd 2.关闭selinux,iptables程序: [[email protected] ~]# service iptables stop [[email protected] ~]# setenforce 0 3.查看下当前系统80端口是否被占用: [[email protected] ~]# ss -tnl State       Recv-Q Send-Q                       

http协议及httpd特性详解

前言 随着互联网的迅猛发展和网络的普及,各类网站层出不穷,网站也成为企业宣传和实力展现的主要途径之一,说到网站就不得不说一下web服务了,现在比较流行的web服务还是当属Apache即httpd.本文将详解http协议及httpd的特性. http协议详解 http协议 http: Hyper Text Transfer Protocol 超文本传输协议 传输文本:HTML html: Hyper Text Mark Language 超文本标记语言 html文档的生成方式 静态:纯html格式

Httpd.conf详解

Apache 的 httpd.conf 详解 ## Apache服务器主配置文件. 包括服务器指令的目录设置.# 详见 <URL:http://www.apache.org/docs/> ## 请在理解用途的基础上阅读各指令.## 再读取此文档后,服务器将继续搜索运行# E:/Program Files/Apache Group/Apache/conf/srm.conf # E:/Program Files/Apache Group/Apache/conf/access.conf# 除非用Re

httpd 安装详解(待更新)

httpd 安装详解 安装httpd: rpm包:CentOS发行版中直接提供 编译安装:定制新功能,或其它原因 安装方式: yum install httpd CentOS 6:httpd-2.2 程序环境: 配置文件: /etc/httpd/conf/httpd.conf/httpd /etc/httpd/conf.d/*.conf 服务脚本: /etc/rc.d/init.d/httpd 脚本配置文件:/etc/sysconfig/httpd 主程序文件: /usr/sbin/httpd

Apache的httpd命令详解

Apache的httpd命令详解 来源:全栈开发者 发布时间:2012-01-03 阅读次数:10965 4 httpd.exe为Apache HTTP服务器程序.直接执行程序可启动服务器的服务.本文以Apache2.2.21版本为例详细介绍该指令的各个参数及用法. 语法格式: httpd [-D name] [-d directory] [-f file]         [-C "directive"] [-c "directive"]         [-w]

CentOS 默认基本服务详解

1.使用chkconfig --list来查看安装的服务,比如我这里最小化安装后的一些服务 [[email protected] ~]# chkconfig --list auditd          0:off   1:off  2:on    3:on    4:on   5:on    6:off crond           0:off   1:off  2:on    3:on    4:on   5:on    6:off ip6tables       0:off  1:off

winxp计算机管理中服务详解

winxp计算机管理中服务详解01 http://blog.sina.com.cn/s/blog_60f923b50100efy9.html http://blog.sina.com.cn/s/blog_b08c76100102vijm.html winxp计算机管理中服务详解02 http://blog.sina.com.cn/s/blog_60f923b50100efz3.html http://blog.sina.com.cn/s/blog_b08c76100102vijn.html