apache

Apache的安装
1. yum在线更新方式安装,yum install httpd –y
2. 配置防火墙,Apache服务默认使用80端口,在防火墙配置中开启80端口
防火墙配置文件 vi /etc/sysconfig/iptables
添加 A INPUT –m state –state NEW –m tcp –p tcp –dport 80 –j ACCEPT
重启防火墙服务 service iptables restart
3. Apache配置完成后,启动服务 service httpd start(如果出现没配置ServiceName参数局的警告信息,不影响),并将Apache服务配置为系统默认启动 chkconfig httpd on

基本配置信息
Apache配置文件/etc/httpd/conf/httpd.conf
 连接时间 如果连接空闲时间过长,会中断连接(接受和发送前超时秒数)
Timeout 60
 配置字符集 配置文件默认字符集编码为UTF-8
AddDefaultCharset UTF-8
 配置索引页面 使输入【http://IP或网址/】时显示索引页面index.php内容,索引页面默认index.html,添加index.php放在index.html前
DirectoryIndex index.php index.htm index.html index.html.var
 配置网页主目录 DocumentRoot参数是网页存放主目录,yum安装的为/var/www/html,以源代码编译方式安装可以指定目录路径
DocumentRoot “/var/www/html”
 配置连接端口 默认情况下Apache会在所有IP地址上监听,如果修改指定的端口,也必须将防火墙的端口修改,修改后在浏览器访问时localhost加端口号
Listen 80
 配置ServerName ServerName用于识别主机名称和端口,CentOS6.x必须要配置,若暂时不知道对外提供服务的主机名称,只要将该行#删除
 配置KeepAlive传输请求(是否允许稳固的连接,每个连接有多个请求) 建议KeepAlive设为On,同一时间发送多个连接,on的状态可以使用一个TCP发送,off状态以多个TCP连接,影响网络效率
KeepAlive On
 MaxKeepAlive KeepAlive on时,每个连接允许的请求数量
 KeepAliveTimeout 在同一个连接上从同一台客户上接收请求的秒数
 禁用CentOS下Apache的测试页面 用“#”将/etc/httpd/conf.d /welcome.conf的内容注释掉
Apache网站部署更新
虚拟机装在台式机中,桥接模式,虚拟机中系统的ip:172.18.30.39,在网页主目录/var/www/html下有个文件:1.html(红色outlook文字)、2.html(简单表单填写信息)、index.php(php信息),通过笔记本或主机访问http:// 172.18.30.39,http:// 172.18.30.39/1.html,有时可以显示网页,有时访问不了。当笔记本的浏览器显示不了网页时,在虚拟机中用浏览器将主页(http:// 172.18.30.39)访问一遍,则笔记本又可以访问了。


缓存、脚本过期时间
HTTP的缓存机制:当资源第一次被访问的时候,http返回200的状态码,并在头部携带上当前资源的一些描述信息
Last-Modified // 指示最后修改的时间
Etag // 指示资源的状态唯一标识
Expires // 指示资源在浏览器缓存中的过期时间
接着浏览器会将文件缓存到Cache目录下,并同时保存文件的上述信息。
当第二次请求该文件时,浏览器会先检查Cache目录下是否含有该文件,如果有,并且还没到Expires设置的时间,即文件还没有过期,那么此时浏览器将直接从Cache目录中读取文件,而不再发送请求。
如果文件此时已经过期,则浏览器会发送一次HTTP请求到WebServer,并在头部携带上当前文件的如下信息:
If-Modified-Since Thu, 26 Nov 2009 13:50:19 GMT
If-None-Match "8fb8b-14-4794674acdcc0"
即把上一次修改的时间,以及上一次请求返回的Etag值一起发送给服务器。服务器在接收到这个请求的时候,先解析Header里头的信息,然后校验该头部信息。
如果该文件从上次时间到现在都没有过修改或者Etag信息没有变化,则服务端将直接返回一个304的状态,而不再返回文件资源。如果服务器经过匹配发现文件修改过了,就会将文件资源返回,并带上新文件状态信息。
Apache的expires_module模块可以在Http响应头部自动加上Expires字段。在Apache的httpd.conf文件中进行如下配置:
#启用expires_module模块
LoadModule expires_module modules/mod_expires.so
# 启用有效期控制
ExpiresActive On
# GIF有效期为1个月
ExpiresByType image/gif A2592000
# HTML文档的有效期是最后修改时刻后的一星期
ExpiresByType text/html M604800
#以下的含义类似
ExpiresByType text/css “now plus 2 month”
ExpiresByType text/js “now plus 2 day”
ExpiresByType image/jpeg “access plus 2 month”
ExpiresByType image/bmp “access plus 2 month”
ExpiresByType image/x-icon “access plus 2 month”
ExpiresByType image/png “access plus 2 month”

实验步骤:在Firefox中使用Live HTTP headers组件查看http头信息,http配置文件中默认所有文件失效时间为A60,使用网页1.html(只含有一个标题,修改标题字体颜色)
第一次访问1.html,header为200,同时返回过期时间expires=Date+60秒
频繁在地址栏敲回车,在过期时间内,不论是否修改了字体颜色,浏览器不会发出http请求,过期时间后,浏览器发送If-Modified-Since和If-None-Match(最后修改时间和Etag)到服务器校验,如果未修改,返回304并从缓存读取数据同时更新Date和expires(因为设置的A60,此次访问时间+60),如果有修改,返回200下载新资源。
若http配置文件中设置的失效时间为M60格式,则理论上失效时间是Last-Modified+60秒,如这个结果小于Date,则expires为当前访问时间Date,即下一秒就过期。

要求网站目录的最后修改时间后立刻过期,可以在httpd配置文件中目录文件的目录下根据文件类型设置
<Directory /var/www/html/index >
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
ExpiresByType text/html M0
#ExpiresByType text/html A0
#Header set Cache-Control ”max-age=0” 同样效果的另2种设置语句
</Directory>

访问控制
Apache配置文件件中的Directory段用于设置与目录相关的参数和指令,包括访问控制和认证,其格式如下所示:
<Directory 目录的路径>
目录相关的配置参数和指令
</Directory>
每个Directory段以<Directory>开始,以</Directory>结束,段作用于<Directory>中指定的目录及其里面的所有文件和子目录。在段中可以设置与目录相关的参数和指令,包括访问控制和认证。Apache中的访问控制指令有以下3种。
1. Allow指令
Allow指令用于设置哪些客户端可以访问Apache,命令格式如下所示。
Allow from [All/全域名/部分域名/IP地址/网络地址/CIDR地址]
 All:表示所有客户端。
 全域名:表示域名对应的客户端,如www.domain.com。
 部分域名:表示域内的所有客户端,如domain.com。
 IP地址:如172.20.17.1。
 网络地址:如172.20.17.0/255.255.255.0。
 CIDR地址:如172.20.17.0/24。
注意:Allow指令中可以指定多个地址,不同地址间通过空格进行分隔。
2. Deny指令
Deny指令用于设置拒绝哪些客户端访问Apache,格式跟Allow指令一样。
3. Order指令
Order指令用于指定执行访问规则的先后顺序,有两种形式:
 Order Allow,Deny:先执行允许访问规则,再执行拒绝访问规则。
 Order Deny,Allow:先执行拒绝访问规则,再执行允许访问规则。
注意:编写Order指令时,Allow和Deny之间不能有空格存在。
简单配置实例:
1. 让所有的人访问Apache服务器,但不希望来自www.test.com的任何访问。
  Order Allow, Deny
  Allow from all
Deny from www.test.com
2. 不让所有人访问,但希望给test.cnn.com网站的来访。
  Order Deny, Allow
  Deny from all
Allow from test.cnn.com

Deny from 笔记本IP后显示的页面

用户认证
确保某些特定网络目录的访问安全性,登陆这些网页目录时,需要输入用户名密码
1. httpd.conf中创建认证目录
<Directory “/var/www/html/security”>
AllowOverride AuthConfig //默认为None即为匿名访问,改为AuthConfig,表示进行身份验证
Order allow, deny
Allow from all
</Directory>
2. 重启Apache
3. 创建认证用户密码
a) /var/www/html下创建目录security(与配置文件中一致)
b) 创建登陆密码文件,并添加登陆用户名和密码(此例为jerry),密码要输两次 htpasswd –c /var/www/html/security/.htpasswd jerry
c) 第一次新增用户要加-c,后续添加用户不必加上-c
d) 修改用户密码,参数-m修改 htpasswd –m /var/www/html/security/.htpasswd jerry
e) 删除存在用户使用-D参数
f) 创建密码文件后,在认证目录下配置.htaccess文件
vi /var/www/html/security/.htaccess
AuthUserFile /var/www/html/security/.htpasswd
AuthName “Welcome Jerry_it”
AuthType Basic
require valid-user
文件.htaccess中常用的配置命令有以下几个:
1)AuthName命令:指定认证区域名称。区域名称是在提示要求认证的对话框中显示给用户的描述信息。
2)AuthType命令:指定认证类型。在HTTP1.0中,只有一种认证类型:basic。在HTTP1.1中有几种认证类型,如:MD5。
3)AuthUserFile命令:指定一个包含用户名和密码的文本文件,每行一对。
4)AuthGroupFile命令:指定包含用户组清单和这些组的成员清单的文本文件(如.manager)。组的成员之间用空格分开,如:managers:user1 user2。
5)require命令:指定哪些用户或组才能被授权访问。如:
require user user1 user2 (只有用户user1和user2可以访问,特定用户登录)
require valid-user (在AuthUserFile指定的文件中任何用户都可以访问)
require group managers (只有组managers中成员可以访问)
如果是用户组登陆,在.htaccess文件中添加AuthGroupFile +用户组文件路径(如/var/www/html/security/.group),.group文件中内容为”组名:用户名1 用户名2”(如managers:ken Jerry),同时require group 组名
g) 测试浏览目录是否要用户名密码 访问//localhost/security,是否有登陆窗口

当用户数量比较少时,这种方法对用户的认证是方便、省事的,维护工作也简单。但是在用户数量有数万人,甚至数十万人时,会在查找用户上花掉一定时间,从而降低服务器的效率。这种情形,应采用数据库方式
http://www.cnblogs.com/fuecms/archive/2011/10/24/2222314.html

在 Apache 上实现 META 切换(文本模式)
只有IE浏览器中才会有“浏览器模式”和“文档模式”,Windows Internet Explorer 8 引入了文本兼容性模式,该模式允许 Web 开发人员将浏览器设置为以与旧版本相同的方式呈现它们的页面。可以根据不同的页面或不同的站点指定兼容性模式。通过在 Apache 中使用自定义标头,对每个站点实现 Windows Internet Explorer 8 支持的一种很常见的文本兼容性模式 — EmulateIE7。
使用 Apache Web 服务器为站点定义自定义标头即可为您的网站指定文本模式。
X-UA-Compatible:IE=EmulateIE7
若要使用 Apache 2.2 为您的站点指定 HTTP 响应标头,您可使用 mod_headers 模块提供的 Header 指令。Header 指令几乎可出现在各种配置文件的任意位置,但主配置文件是 httpd.conf。可通过在配置部分将它们括起来以限制其范围,如 <Location>、<Directory>、<Files> 和 <VirtualHost>。
在 httpd.conf 中添加该指令后,由您的服务器发送的属于该范围内的所有页面都将包含 X-UA-Compatible HTTP 响应标头。
首先,需要确保服务器初始化期间加载了 headers_module。
LoadModule headers_module modules/mod_headers.so
若要将该标头添加到服务器上的所有页面,请将以下行添加到 httpd.conf 文件的 LoadModule 行之后。
Header set X-UA-Compatible “IE=EmulateIE7”
一般不需要将标头应用到服务器上的每个页面。<Location> 指令可用于更改 Web 空间中的内容配置,以文本根目录为基点。如,以下配置可将 HTTP 标头应用到任何以 /store 开头的 URL 路径。它将应用于针对 http://yoursite.com/store 和 http://yoursite.com/store/file.html 的请求以及任何以 /store 字符串开头的其他请求。
<Location /store>
Header set X-UA-Compatible “IE=EmulateIE7”
</Location>

 

你可能感兴趣的:(apache)