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/”
构建虚拟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……
构建虚拟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:8080
构建虚拟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.1
建立系统用户的个人主页
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_html
容器指令
容器指令(container directive)通常包括在<>括号内,较容易识别,常用的容器指令有:
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\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……
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 …
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 onRewriteCond %{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 OnRewriteCond %{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的动态网页.