Apache服务器配置 构建虚拟Web主机

Apache服务器配置

本章目标

1.apache配置文件\r\n2.apache虚拟目录\r\n3.构建虚拟Web主机\r\n4.建立系统用户的个人主页\r\n5.httpd服务的访问控制\r\n6.apache的rewrite功能

httpd服务的目录结构

主要目录和文件:\r\n服务目录:/usr/local/apache2/\r\n主配置文件:/usr/local/apache2/conf/httpd.conf\r\n网页目录:/usr/local/apache2/htdocs/\r\n服务脚本:/usr/local/apache2/bin/apachectl\r\n执行程序:/usr/local/apache2/bin/httpd\r\n访问日志: /usr/local/apache2/log/access_log\r\n错误日志: /usr/local/apache2/log/error_log

构建基本可用的Web服务器

1. 修改主配置文件httpd.conf,设置站点名\r\nServerName www.lamp.com\r\n2. 进行语法检查\r\n/usr/local/apache2/bin/apachectl  -t\r\n或者 /usr/local/apache2/bin/httpd  -t\r\n3. 启动httpd服务\r\n/usr/local/apache2/bin/apachectl start \r\n4. 访问网站进行测试\r\nhttp://www.lamp.com

httpd.conf配置文件

常用的全局配置参数\r\nServerRoot:      服务目录\r\nServerAdmin:   管理员邮箱\r\nUser:                 运行服务的用户身份\r\nGroup:              运行服务的组身份\r\nServerName:    网站服务器的域名\r\nDocumentRoot    网页文档的根目录\r\nListen:              监听的IP地址、端口号\r\nPidFile:            保存httpd进程PID号的文件\r\nDirectoryIndex:默认的索引页文件

httpd.conf配置文件

常用的全局配置参数(续)\r\nErrorLog:错误日志文件的位置\r\nCustomLog:访问日志文件的位置\r\nLogLevel:记录日志的级别,默认为warn\r\nTimeout:网络连接超时,默认为300秒\r\nKeepAlive:是否保持连接,可选On或Off\r\nMaxKeepAliveRequests:每次连接最多请求文件数\r\nKeepAliveTimeout:保持连接状态时的超时时间\r\nInclude:需要包含进来的其他配置文件\r\nStartServers 8 http启动进程的数目

httpd服务的日志

两类日志文件\r\n访问日志:/usr/local/apache2/logs/access_log \r\n错误日志:/usr/local/apache2/logs/error_log\r\nhttpd.conf中对日志的设置

[root@localhost ~]# vi /usr/local/apache2/conf/httpd.conf\r\n……\r\nErrorLog  logs/error_log\r\nCustomLog  logs/access_log  common\r\n……

载入模块指令

Apache服务器采用动态共享对象(DSO,Dynamic Shared Object)的机制,在启动Apache服务器时可根据实际需要载入适当的模块,使其具有相应的功能。\r\n\r\n载入模块的相关指令有:\r\nLoadModule\r\nClearModuleList\r\nAddModule

LoadModule

LoadModule指令用于动态载入模块,即将模块外挂在Apache服务器上。\r\n\r\n语法:\r\nLoadModule 模块名称  模块文件路径全名\r\n\r\n实例:\r\nLoadModule status_module modules/mod_status.so

Apache虚拟目录

虚拟目录的优点\r\n 便于访问\r\n 便于移动站点目录\r\n 加大磁盘空间\r\n 安全性好

Apache虚拟目录

alias /test “/var/www/test/” \r\n Options Indexes MultiViews \r\n Order allow,deny\r\n Allow from all

构建虚拟Web主机

虚拟Web主机\r\n即在同一台服务器中运行多个Web站点的应用,其中每一个站点并不独立占用一台真正的计算机 \r\nhttpd支持的虚拟主机类型\r\n基于IP地址的虚拟主机\r\n基于端口的虚拟主机\r\n基于域名的虚拟主机

构建虚拟Web主机-基于IP地址

应用示例2:\r\n构建2个虚拟Web站点:\r\n www.lamp.com,IP地址为 192.168.10.1 \r\n www.accp.com,IP地址为 192.168.4.1\r\n在浏览器中访问这两个IP时,分别显示不同的内容

[root@www htdocs]# vi /usr/local/apache2/conf/httpd.conf\r\n……DocumentRoot /usr/local/apache2/htdocs/lampcom\r\n    ServerName www.lamp.comDocumentRoot /usr/local/apache2/htdocs/accpcom\r\n    ServerName www.accp.com

构建虚拟Web主机-基于端口

应用示例3:\r\n构建2个虚拟Web站点:\r\n www.lamp.com,IP地址、端口为 192.168.10.1:80\r\n www.accp.com,IP地址、端口为 192.168.10.1:8080\r\n在浏览器中访问这两个端口时,分别显示不同的内容

[root@www htdocs]# vi /usr/local/apache2/conf/httpd.conf\r\n……\r\nListen 192.168.10.1:80\r\nListen 192.168.10.1:8080DocumentRoot /usr/local/apache2/htdocs/lampcom\r\n    ServerName www.lamp.comDocumentRoot /usr/local/apache2/htdocs/accpcom\r\n    ServerName www.accp.com

构建虚拟Web主机-基于域名

应用示例1:\r\n构建2个虚拟Web站点:\r\n www.lamp.com,IP地址为 192.168.10.1 \r\n www.accp.com,IP地址为 192.168.10.1\r\n在浏览器中访问这两个域名时,分别显示不同的内容

[root@www htdocs]# vi /usr/local/apache2/conf/httpd.conf\r\n……\r\nNameVirtualHost 192.168.10.1DocumentRoot /usr/local/apache2/htdocs/lampcom\r\n    ServerName www.lamp.comDocumentRoot /usr/local/apache2/htdocs/accpcom\r\n    ServerName www.accp.com

建立系统用户的个人主页

1. 修改httpd.conf,启用个人主页功能\r\nUserDir public_html\r\n确认目录区域设置\r\n2. 建立个人主页测试网页\r\n~/public_html/index.html\r\n添加权限:chmod o x /home/jerry/ \r\n3. 重新启动httpd服务\r\n/usr/local/apache2/bin/apachectl  restart\r\n4. 访问测试\r\nhttp://www.lamp.com/~user

[root@www ~]# vi /usr/local/apache2/conf/httpd.conf\r\n……\r\n#UserDir  disable\r\n……\r\nUserDir  public_htmlAllowOverride none\r\n    Options none\r\n    Order allow,deny\r\n    Allow from all

容器指令

容器指令(container directive)通常包括在<>括号内,较容易识别,常用的容器指令有:

设置“/”根目录的访问权限\r\n    Options FollowSymLinks\r\n    AllowOverride None 目录属性设置结束\r\n\r\n使用设置指定目录的访问权限,其中可包含:\r\nOptions\r\nAllowOverride\r\nOrder\r\nAllow \r\nDeny\r\n五个属性。

Options属性

Options  FollowSymLinks  Indexes  MultiViews\r\n\r\nOptions可以组合设置下列选项:\r\nAll:用户可以在此目录中作任何事情。\r\nExecCGI:允许在此目录中执行CGI程序。\r\nFollowSymLinks:服务器可使用符号链接指向的文件或目录。\r\nIndexes:服务器可生成此目录的文件列表。\r\nNone:不允许访问此目录\r\nmultiviews: 允许多用户浏览

AllowOverride

AllowOverride None\r\n\r\nAllowOverride会根据设定的值决定是否读取目录中的.htaccess文件,来改变原来所设置的权限。\r\n\r\nAll:读取.htaccess文件的内容,修改原来的访问权限。\r\nNone:不读取.htaccess文件\r\n\r\n为避免用户自行建立.htaccess文件修改访问权限,http.conf文件中默认设置每个目录为: AllowOverride None。

Allow

设定允许访问Apache服务器的主机\r\n\r\nAllow from all\r\n允许所有主机的访问\r\n\r\nAllow from 202.96.0.97 202.96.0.98\r\n允许来自指定IP地址主机的访问

Deny

设定拒绝访问Apache服务器的主机\r\n\r\nDeny from  all\r\n拒绝来自所有主机的访问\r\n\r\nDeny from  202.96.0.99  202.96.0.88\r\n拒绝指定IP地址主机的访问

Order

Order allow,deny\r\nOrder用于指定allow和deny的先后次序。\r\n范例:\r\nOrder deny,allow\r\nDeny from all\r\nAllow from 202.96.0.97\r\nOrder allow,deny\r\nAllow from all\r\nDeny from 202.96.0.97

容器包含只应用于指定文件的指令,文件应该由文件名(必要时使用统配符)指定\r\n\r\n实例:Order allow,deny\r\n     Deny from all

容器包含只应用于特定URL的指令。\r\n\r\n实例:SetHandler server-status\r\norder deny,allow\r\nallow from 127.0.0.1\r\ndeny from all

认证和授权

认证类型\r\nBasic digest(摘要认证)\r\n建立认证与授权的步骤\r\n建立用户库\r\n配置服务器的保护域\r\n什么用户具有访问权限\r\n认证指令:\r\nAuthname 受保护领域名称\r\nAuthtype 认证方式\r\nAuthuserfile 认证口令文件\r\nauthgroupfile 认证组文件

认证和授权

Require user 授权指定用户\r\nRequire group 授权指定组\r\nRequire valid-user 授权给认证口令文件用户\r\n建立用户库基本认证\r\nhtpasswd -c authfile username\r\n口令文件格式\r\nUsername:password

AuthType

AuthType Basic\r\n\r\nAuthType指令用于设置身份认证时传送密码的编码方式。设置为“Basic”时利用uuencode编码方式传送密码。\r\nAuthType需与AuthName 、Require、AuthUserFile一同使用。

AuthName

AuthName auth-domain \r\nAuthName指令对当前定义的认证区域进行命名,该名称会出现在浏览器客户端的用户认证对话框中,以标识用户被认证的区域。如认证区域名称中包含空格需用“”括起。\r\nAuthName需与AuthType、Require、AuthUserFile一同使用。

Require

Require指令用于设定可进行身份验证的用户。\r\nRequire user 用户名 [用户名] ……\r\n 设置指定用户名的用户可通过身份验证访问区域。\r\nRequire group 组名 [组名 ] ……\r\n  设置指定组内的用户可通过身份验证访问区域。\r\nRequire valid-user \r\n  设置所有合法用户可通过身份验证访问区域。

htpasswd命令

htpasswd指令用于创建密码文件和设置用户密码:\r\nhtpasswd -c 文件名  用户名\r\n例: htpasswd –c .htpasswd user1\r\n\r\nhtpasswd 文件名  用户名\r\n  在指定的密码文件中添加指定用户的密码,如该用户已存在则修改用户密码

AuthUserFile

AuthUserFile file-path \r\nAuthUserFile指令用于设置验证用户身份的密码文件,该文件名需设置绝对路径。\r\n例如:\r\nAuthUserFile /etc/httpd/conf/.htpasswd\r\n密码文件是用htpasswd命令创建的。

httpd服务的访问控制

基于用户的访问控制\r\n添加认证授权设置

[root@www ~]# vi /usr/local/apache2/conf/httpd.conf\r\n…………\r\n    AuthName  "AWSTATS "\r\n    AuthType  Basic\r\n    AuthUserFile  /usr/local/awstats/wwwroot/.htpasswd\r\n    require  valid-user……

httpd服务的访问控制

基于用户的访问控制\r\n创建存储认证用户账号及口令的文件\r\n 需使用htpasswd工具

[root@www ~]# cd /usr/local/apache2/bin\r\n[root@www apache2]# ./htpasswd -c  /usr/local/awstats/wwwroot/.htpasswd  awuser

httpd服务的访问控制

基于客户端地址的访问控制\r\nOrder配置项,定义控制顺序\r\n 先允许后拒绝,默认拒绝所有:Order allow,deny\r\n 先拒绝后允许,默认允许所有:Order deny,allow\r\nAllow、Deny配置项,设置允许或拒绝的地址\r\n Deny from address1 address2 …\r\n Allow from address1 address2 …

Order allow,deny\r\n    Allow from 192.168.0.0/24\r\n    Deny from 192.168.0.100

Apache Rewrite 重写配置

1、mod_rewrite 简介和配置

Rewirte主要的功能就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则\r\n表达式规范。平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等


普通的php地址为:                            */lamp.php?id=2\r\n转换后的html地址:                           */lamp_2.html\r\n或转换这种形式:                               */lamp_2/

apache配置rewrite

Apache配置:\r\n\r\n支持httpd.conf 配置和目录 .htaccess配置\r\n\r\n启用rewrite\r\n# LoadModule rewrite_module            modules/mod_rewrite.so\r\n去除前面的 #\r\nLoadModule rewrite_module modules/mod_rewrite.so\r\n\r\n启用.htaccess\r\nAllowOverride None    修改为:  AllowOverride All

Apache Rewrite 拟静态配置

2、mod_rewrite 规则的使用

RewriteEngine on               启动rewrite引擎\r\n\r\nRewriteCond %{HTTP_HOST} !^www.lamp.com  [NC]          判断主机\r\n\r\nRewriteRule   ^/(.*) http://www.lamp.com/ [L]              跳转到\r\n\r\n\r\nRewriteEngine on                启动rewrite引擎\r\nRewriteRule ^/test([0-9]*).html$ /test.php?id=$1\r\nRewriteRule ^/new([0-9]*)/$ /new.php?id=$1 [R]            跳转到

Apache Rewrite 拟静态配置2

1.将输入 en.lamp.com 的域名时跳转到www.lamp.com\r\nRewriteEngine on RewriteCond %{HTTP_HOST} ^en. lamp.com [NC] RewriteRule ^(.*) http://www.lamp.com/ [L]\r\n2. 将http://ss.kiya.cn/bbs/tread-60.html, 让它在新的域名下继续有效,点击后转发到http://bbs.lamp.com/index.html \r\nRewriteEngine On RewriteCond %{REQUEST_URI} ^/bbs/ RewriteRule ^bbs/(.*) http://bbs.lmap.com/$1 [L]

apache rewrite日志功能

vi /etc/httpd/httpd.conf\r\nrewritelog /usr/local/apache/logs/rewrite.log  rewriteloglevel 9 \r\n#这样就可以把用apache做过的所有的rewrite过程全记录下来.\r\n#当需要调试时请用rewritelog and rewriteloglevel 9联合,9为最大即得到最多的调试信息,最小为1,最小的调试信息,默认为0,没有调试信息

Apache Rewrite 拟静态配置

3、mod_rewrite 规则修正符

1) R 强制外部重定向\r\n2) F 禁用URL,返回403HTTP状态码\r\n3) G 强制URL为GONE,返回410HTTP状态码\r\n4) P 强制使用代理转发\r\n5) L 表明当前规则是最后一条规则,停止分析以后规则的重写\r\n6) N 重新从第一条规则开始运行重写过程\r\n7) C 与下一条规则关联\r\n8) NS  只用于不是内部子请求\r\n9) NC 不区分大小写\r\n10) NE 不在输出转义特殊字符   \=$1  等价于 =$1

本章小结

1.apache配置学习\r\n2.apache虚拟目录的方法\r\n3.构建虚拟Web主机的三种方法\r\n4.建立系统用户的个人主页\r\n5.httpd服务的访问控制\r\n6.apache的rewrite功能

课后练习

1.在系统中创建一个新一目录/web,在该目录中放入一些web网页,这是一个开发目录,那么如何可以方便的设置后可以供用户正常访问\r\n2.该网站有两个域名,www.baidu.com和www.g.cn,如何去设置,用这两个域名去访问这台服务器上的这两家公司的网站\r\n3.当去访问http://www.baidu.com/index_1.html时让该请求去访问/index.php?id=1的动态网页.