httpd-2.2 常用配置选项及VirtualHost

目录:

一、httpd服务基本介绍

二、httpd-2.2常用小选项配置

三、httpd-2.2 VirtualHost配置

四、httpd-2.2的基于https的安全访问

--------------------------------------

一、httpd服务基本介绍:

httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立的运行的后台进程,它会建立一个出来请求的子进程或线程的池。通常httpd不被直接调用,而是由apachectl调用。http是一个应用程的协议,它可以分为http和https,它们分别使用tcp协议端口的80和443端口。

请求响应方式:

客户端需要访问某资源时会向服务器发送http请求报文,服务器根据客户端请求信息做出http响应报文,所以一次http事务就是http请求然后http会给予请求响应。

web资源:

资源的标识:URL:用于标识web资源所在的位置。

格式:协议://主机地址或者主机名[:端口][/目录资源]

静态资源:不需要服务器做任何操作处理,例如.JGP .PNG格式的文件等

动态资源:服务器需要执行一些程序做出处理后返回给客户端请求所需要的信息,例如.php .js

一次完整的htpt请求处理过程:

(1)建立或处理连接:接收请求或者是拒绝请求

(2)接收请求:接收客户端主机请求报文中对某个资源的一次请求过程

(3)处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法相关信息

(4)访问资源:获取请求报文中请求的资源

(5)构建响应报文

(6)发送响应报文

(7)记录日志

并发访问响应模型:

单进程I/O模型:启动一个进程处理用户请求,一次只能处理一个请求对公请求被串行响应

多进程I/O模型:并行启动多个进程,每个进程响应一个请求

复用进程I/O模型:一个进程响应多个请求

多线程模式:一个进程生成多个线程,一个线程处理一个请求

事件驱动模式:一个进程直接响应多个请求

复用多进程I/O模型:启动多个进程,每个进程生成多个线程,响应请求的数量就是线程乘以进程

httpd工作模式:

prefork:多进程模式:一个主进程多个子进程,一个进程只响应一个请求。一个主进程负责生成子进程及回收子  进程,接收请求,派发请求给子进程处理,生成的多个子进程中每个子进程负责处理一个请求。

worker:多进程多线程模式:一个线程响应一个用户请求。一个主进程负责生成子进程及回收及进程,创建套接字,派发请求给子进程处理。多个子进程负责生成多个线程。每个线程负责响应用户请求。

event:事件驱动模式:多进程模式:一个进程响应多个用户请求。一个主进程负责生成子进程及回收及进程,创建套接字,派发请求给子进程处理。子进程负责基于事件驱动机制直接来响应用户的请求。

二、httpd常用选项配置

1、监听端口

Listen 80  ##监听本机的80端口
Listen 8080 ##监听本机的8080端口
Listen 192.168.1.100:80 ##监听特定IP的80端口
Listen 192.168.1.101:8080 ##监听指定IP的特定端口

2、保持连接

KeepAlive Off|ON ##是否允许持续性连接,即建立一次tcp连接完成多个文件传输
MaxKeepAliveRequests 100 ##最大保存连接请求数量
KeepAliveTimeout 15 ##保存持续性连接超时时间

3、MPM多路处理模块

[[email protected] ~]# ps aux | grep httpd ##查看httpd使用的MPM模块
root       5012  0.0  0.3 185928  3972 ?        Ss   23:44   0:00 /usr/sbin/httpd
apache     5022  0.0  0.2 186060  2492 ?        S    23:44   0:00 /usr/sbin/httpd
apache     5023  0.0  0.2 186060  2508 ?        S    23:44   0:00 /usr/sbin/httpd
apache     5024  0.0  0.2 186060  2492 ?        S    23:44   0:00 /usr/sbin/httpd
apache     5025  0.0  0.2 186060  2492 ?        S    23:44   0:00 /usr/sbin/httpd
apache     5026  0.0  0.2 186060  2492 ?        S    23:44   0:00 /usr/sbin/httpd
apache     5027  0.0  0.2 186060  2492 ?        S    23:44   0:00 /usr/sbin/httpd
apache     5028  0.0  0.2 186060  2492 ?        S    23:44   0:00 /usr/sbin/httpd
apache     5029  0.0  0.2 186060  2492 ?        S    23:44   0:00 /usr/sbin/httpd
root       5064  0.0  0.0 103304   892 pts/2    S+   23:55   0:00 grep httpd
[[email protected] ~]# httpd -l                #####我们从中可以看出使用的是默认preforkmok
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c
 
 
 
如果需要更改我们默认使用的模块方法:
[[email protected] ~]# vim /etc/sysconfig/httpd 
HTTPD=/usr/sbin/httpd.worker

-------------------------- ----------------------------------
<IfModule prefork.c>###prefork模块配置
StartServers       8  #启动httpd时预先创建几个子进程数量
MinSpareServers    5  #最小空闲进程数量 
MaxSpareServers   20  #最大空闲进程数量
ServerLimit      256  #服务器同一时间内能够响应进程的数量
MaxClients       256  #最多可以允许客户端并发请求连接数量
MaxRequestsPerChild  4000 #每个子进程能够响应的最大请求数量
</IfModule>

<IfModule worker.c>##worker模块配置
StartServers         4  #启动httpd是预先创建几个字进程数量
MaxClients         300  #最多允许客户端并发请求连接数量
MinSpareThreads     25  #最小空闲进程数量
MaxSpareThreads     75  #最大空闲进程数量
ThreadsPerChild     25  #进程启动时候生成的线程数量
MaxRequestsPerChild  0  #每个子进程能够响应的最大请求数量
</IfModule>

4、DSO(动态加载或卸载模块)

# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so

5、基于ip来源访问控制

<Directory "/var/www/html">

 Options Indexes FollowSymLinks   #定义资源展示方式
    AllowOverride None
    
      Order allow,deny
     Allow from all
    deny from 192.168.1.100 ###禁止192.168.1.100访问网站
</Directory>

6、定义站点主页面

DirectoryIndex index.html index.html.var (有多个文件自左而又查找)

7、定义路径别名

[[email protected] ~]# mkdir -p /etc/url/index.html ###建立别名链接文件

[[email protected] ~]# vim /etc/httpd/conf/httpd.conf 
    Alias /bbs/ "/etc/url/"  ##编辑主配置文件设置路径别名连接
 
测试:
[[email protected] ~]# curl 192.168.1.100/bbs/index.html 
url alias

8、基于用户访问认证控制

第一种:基于用户账号进行认证

1)主配置文件中添加认证区域内容:

[[email protected] ~]# vim /etc/httpd/conf/httpd.conf 
<Directory "/var/www/html">

 Options Indexes FollowSymLinks 
    AllowOverride None
    
     Order allow,deny
     Allow from all
     deny from 192.168.1.100 

添加内容##    
    AuthType Basic  ###定义认证的类型:明文(basic)或密文(digest)
    AuthName "admin use zone"  ###提示信息
    AuthUserFile "/etc/httpd/conf/.htpasswd" ###认证用户文件存放路径
    Require valid-user  ####允许用户文件中的所有用户登录
      
</Directory>

2)提供用户账号和密码文件:

[[email protected] ~]# htpasswd -c -m /etc/httpd/conf/.htpasswd tom 
[[email protected] ~]# htpasswd  -m /etc/httpd/conf/.htpasswd jerry

3)检查配置文件重新加载

[[email protected] ~]# httpd -t 
Syntax OK
[[email protected] ~]# service httpd reload 
Reloading httpd:

第二种:基于组账号进行认证

1)

[[email protected] ~]# vim /etc/httpd/conf/httpd.conf 
<Directory "/var/www/html">

 Options Indexes FollowSymLinks 
    AllowOverride None
    
     Order allow,deny
     Allow from all
     deny from 192.168.1.100 

添加内容##    
    AuthType Basic  ###定义认证的类型:明文(basic)或密文(digest)
    AuthName "admin use zone"  ###提示信息
    AuthUserFile "/etc/httpd/conf/.htpasswd" ##定义用户账号文件
    AuthGroupFile "/etc/httpd/conf/.hgpasswd" ###定义组账号文件
    Require group groupuser ###定义组账号文件中允许访问的用户
   
</Directory>

2)建立用户

[[email protected] ~]# htpasswd -c -m /etc/httpd/conf/.htpasswd user1
[[email protected] ~]# htpasswd  -m /etc/httpd/conf/.htpasswd user2

3)建立组账号文件

[[email protected] ~]# vim /etc/httpd/conf/.hgpasswd
    groupuser: user1 user2

4)检查配置文件重新加载

[[email protected] ~]# httpd -t 
Syntax OK
[[email protected] ~]# service httpd reload 
Reloading httpd:

9、status页面

1)确保模块加载:LoadModule status_module modules/mod_status.so
2)开启228行 ExtendedStatus On
3)编辑status区域
 <Location /var/www/html/server-status>
        SetHandler server-status
         Order allow,deny 
        Allow from 192.168
  </Location>
  
4)检查配置文件正确否,加载服务

5)访问
 Apache Server Status for 192.168.1.100

Server Version: Apache/2.2.15 (Unix) DAV/2
Server Built: Jul 24 2015 11:52:28
Current Time: Thursday, 12-May-2016 01:24:37 CST
Restart Time: Thursday, 12-May-2016 01:22:20 CST
Parent Server Generation: 7
Server uptime: 2 minutes 16 seconds
Total accesses: 4 - Total Traffic: 0 kB
CPU Usage: u0 s0 cu0 cs0
.0294 requests/sec - 0 B/second - 0 B/request
1 requests currently being processed, 7 idle workers
____W___........................................................
................................................................
................................................................
................................................................
Scoreboard Key:

10、运行httpd服务的属主和属组

User apache
Group apache

11、使用mod_deflate模块压缩页面优化传输速度

SetOutputFilter DEFLATE
# mod_deflate configuration

# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain 
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css

# Level of compression (Highest 9 - Lowest 1)
DeflateCompressionLevel 9
			 
# Netscape 4.x has some problems.
BrowserMatch ^Mozilla/4  gzip-only-text/html
			 
# Netscape 4.06-4.08 have some more problems
BrowserMatch  ^Mozilla/4\.0[678]  no-gzip
			 
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSI[E]  !no-gzip !gzip-only-text/html

三、httpd-2.2 VirtualHost配置

1、基于IP的virtualhost:(事先准备好两个IP)

1)编辑配置文件设置如下:

<VirtualHost 192.168.1.100:80>
    DocumentRoot "/web/vhosts/www1"
    ServerName www1.a1.com
    ErrorLog "/var/log/httpd/www1.err"
    CustomLog "/var/log/httpd/www1.access" common
</VirtualHost>

<VirtualHost 192.168.1.101:80>
    DocumentRoot "/web/vhosts/www2"
    ServerName www2.a2.com
    ErrorLog "/var/log/httpd/www2.err"
    CustomLog "/var/log/httpd/www2.access" common
</VirtualHost>

2)修改下

DocumentRoot "/web/vhosts/"

3)建立网页文件

[[email protected] ~]# mkidr -p /web/vhosts/www1/index.html
[[email protected] ~]# mkidr -p /web/vhosts/www2/index.html

4)检查配置文件是否正确,然后重启或加载,ok后测试结果

[[email protected] ~]# httpd -t 
Syntax OK
[[email protected] ~]# service httpd reload

5)查看我们的日志文件

[[email protected] ~]# cat /var/log/httpd/www1.access
192.168.1.103 - - [12/May/2016:02:14:04 +0800] "GET / HTTP/1.1" 200 25
[[email protected] ~]# 
[[email protected] ~]# 
[[email protected] ~]# cat /var/log/httpd/www
www1.access  www1.err     www2.access  www2.err     
[[email protected] ~]# cat /var/log/httpd/www1.err

2、基于端口的virtualhost

1)编辑配置文件设置如下:

<VirtualHost 192.168.1.100:80>
    DocumentRoot "/web/vhosts/www1"
    ServerName www1.a1.com
    ErrorLog "/var/log/httpd/www1.err"
    CustomLog "/var/log/httpd/www1.access" common
</VirtualHost>

<VirtualHost 192.168.1.100:8080>
    DocumentRoot "/web/vhosts/www2"
    ServerName www2.a2.com
    ErrorLog "/var/log/httpd/www2.err"
    CustomLog "/var/log/httpd/www2.access" common
</VirtualHost>

2)设置监听地址

Listen 80
Listen 8080

3)检查然后重新加载服务,测试

3、基于FQDN的virtualhost

1)开启虚拟主机域名

NameVirtualHost 192.168.1.100:80

2)编辑配置文件设置如下:

<VirtualHost 192.168.1.100:80>
    DocumentRoot "/web/vhosts/www1"
    ServerName www1.a1.com
    ErrorLog "/var/log/httpd/www1.err"
    CustomLog "/var/log/httpd/www1.access" common
</VirtualHost>

<VirtualHost 192.168.1.100:80>
    DocumentRoot "/web/vhosts/www2"
    ServerName www2.a2.com
    ErrorLog "/var/log/httpd/www2.err"
    CustomLog "/var/log/httpd/www2.access" common
</VirtualHost>

3)解析域名,此处我就用hosts文件来解析了

[[email protected] ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.0.1  server.magelinux.com server
192.168.1.100   www1.a1.com
192.168.1.100   www2.a2.com

4)检查加载服务,测试即可

四、httpd-2.2的基于https的安全访问

###CA服务器上操作:

1)生成密钥对密钥对

[[email protected] CA]# (umak 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

2)生成自签证书

[[email protected] CA]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655

Country Name (2 letter code) [XX]:CN ##国家
State or Province Name (full name) []:beijing ##省
Locality Name (eg, city) [Default City]:beijin  ##市
Organization Name (eg, company) [Default Company Ltd]:magedu.com   #公司名称
Organizational Unit Name (eg, section) []:yunwei  ##部门
Common Name (eg, your name or your server‘s hostname) []:bogon ##ca域名
Email Address []:[email protected] #邮箱

3)为CA提供所需目录及文件

[[email protected] CA]# touch {serial,index.txt}
[[email protected] CA]# echo 01 > serial

###httpd服务器上操作:

1)生成密钥

[[email protected] ~]# mkdir /etc/httpd/ssl
[[email protected] ~]# cd /etc/httpd/ssl/
[[email protected] ssl]# (umask 077;openssl genrsa -out /etc/httpd/)
conf/    conf.d/  logs/    modules/ run/     ssl/     
[[email protected] ssl]# (umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)

2)生成证书签署请求

[[email protected] ssl]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365

Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:beijin
Organization Name (eg, company) [Default Company Ltd]:magedu.com
Organizational Unit Name (eg, section) []:yunwei
Common Name (eg, your name or your server‘s hostname) []:bogon
Email Address []:[email protected]

3)在CA上签署证书,并将证书方式给请求者

[[email protected] tmp]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
[[email protected] certs]# scp httpd.crt [email protected]:/etc/httpd/ssl

4)httpd要支持SSL需要安装mod_ssl模块

[[email protected] ~]# yum -y install mod_ssl

5)配置/etc/httpd/conf.d/ssl.conf

<VirtualHost 192.168.1.100:443> ##此行IP地址需要按照你自己需求更改
DocumentRoot "/web/vhosts/www1"
ServerName 

SSLCertificateFile /etc/httpd/ssl/httpd.crt 
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key  ##证书私钥

6)检查配置文件,重新加载,测试即可

[[email protected] ssl]# httpd -t 
Syntax OK
[[email protected] ssl]# service httpd reload 
Reloading httpd:
时间: 2024-10-10 16:59:43

httpd-2.2 常用配置选项及VirtualHost的相关文章

salt-master&amp;minion常用配置选项

master常用配置选项: 1 interface: 指定bind的地址(默认0.0.0.0) 2 publish_port:指定发布端口(默认4505) 3 ret_port: 指定结果返回端口,与minion配置文件的master——port对应(默认为root) 4 user: 指定master进程的运行用户,如果调整,则需要调整部分目录的权限(默认root) 5 timeout: 指定timeout时间,如果minion规模庞大或网络状况不好,建议增大该值(默认5s) 6 keep_jo

Apache httpd服务——常用配置

httpd 2.4 常用配置 yum安装后默认配置文件 1 ~]# cat /etc/httpd/conf/httpd.conf 2 ServerRoot "/etc/httpd" 3 Listen 80 4 Include conf.modules.d/*.conf 5 User apache 6 Group apache 7 ServerAdmin [email protected] 8 ServerName www.example.com:80 9 <Directory /

thinkphp3.2链接数据库常用的配置选项

thinkphp3.2常用配置选项,app/Common/Conf/config.php 或者 app/Home/Conf/config.php 1 2 3 4 5 6 7 8 'SHOW_PAGE_TRACE' => true;         //开启右下角的调试信息小图标,调试时使用 'DB_TYPE'               =>  'mysql',        // 数据库类型 'DB_HOST'               =>  'localhost',    // 

httpd的常用配置

(1)安装httpd: [[email protected] named]# yum install -y httpd (2)配置文件: 主配置文件:/etc/httpd/conf/httpd.conf ### Section 1: Global Environment全局配置 ### Section 2: 'Main' server configuration主服务配置 ### Section 3: Virtual Hosts虚拟主机配置 辅助配置文件:/etc/httpd/conf.d/*.

Windows Server 2012 R2 WSUS-9:常用控制台选项配置

在WSUS控制台中,默认提供了很多选项,这些选项为我们更好的管理和使用WSUS提供了很好的途径.首先,来看看"计算机清理向导",一般我们可以每个月运行一次计算机清理向导,来清理不需要的更新,释放磁盘空间等等,具体清理向导打开的方式如下. 打开之后可以做的清理操作如下.我们可以默认全部选择,也可以根据需要进行自定义的选择.如果公司的环境中计算机的数目比较多,这个清理向导还是很有用处的. 另外一个功能就是我们可以配置电子邮件通知.选择"选项","电子邮件通知&

httpd服务的简单配置

大纲:  1.httpd服务的安装  2.主配置文件/etc/httpd/conf/httpd.conf常见选项简介  3.basic认证的实现  4.基于ip,port和FQDN的虚拟主机的实现  5.实现ssl加密的http服务  6.简单的压力测试  7.关于httpd2.2和httpd2.4之间的差异会贯穿在整篇文章中 一.安装httpd服务 [[email protected] ~]#yum -y install httpd  [[email protected] ~]# rpm -q

Linux服务管理之httpd-2.4常用配置及phpMyAdmin、wordpress、Discuz安装

一.何为httpd httpd是Apache超文本传输协议(HTTP)服务器的主程序.被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池. Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.它快速.可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中. 二.httpd-2.4较httpd-2.2 新特性: (1) MPM支持运行DSO机制:以

Centos 6 apache httpd 2.2 主要配置详解( 一 )

实验环境:VMware Workstation Pro 14(试用版) 系统平台: CentOS release 6.9 (Final) 内核 2.6.32-696.el6.x86_64 Server version: Apache/2.2.15 (Unix) 模块文件路径: /etc/httpd/modules /usr/lib64/httpd/modules 主程序文件: /usr/sbin/httpd /usr/sbin/httpd.work /usr/sbin/httpd.even 主进

Apache的常用配置

1. 配置启动脚本如果是源码编译安装,需手动配置启动脚本,官方源码包中已经提供了这个脚本:build/rpm/httpd.init cp /usr/local/src/httpd-2.4.25/build/rpm/httpd.init /etc/init.d/httpd注意文件中有三处主要的地方需要修改下的:httpd=${HTTPD-/usr/local/apache2/bin/httpd} pidfile=${PIDFILE-/usr/local/apache2/logs/${prog}.p