发布时间:2014-09-05 16:46:38作者:知识屋
随便记录一下,不求严谨,但求无原则性错误。-- DebaoZhang 20111023
Apache是一个http服务器,在无连接的时候,它除了监听配置文件中指定的IP地址和TCP端口号外不做任何工作;当一个请求出现在一个有效的端口时,Apache接受HTTP请求并分析其头部,然后它根据配置文件中设定的规则,做出某种合适的动作。
Apache通过一个配置文件进行设置
C:/Program Files/Apache Software Foundation/Apache2.2/conf/httpd.conf
/etc/apache2/apache2.conf
可以通过命令行参数 -f 指定
用 Listen 指定要绑定的端口号
Listen 80Listen 127.0.0.1:8080Listen 10.0.2.15:8081Listen [fe80::222:5fff:feb9:82d0]:8888
不同的IP和端口组合可以用来做虚拟主机,这需要通过VirtualHost进一步配置(必须先用Listen设置监听地址)
<VirtualHost 127.0.0.1:8080>...</VirtualHost><VirtualHost 10.0.2.15:8081>ServerNname host.example.com...</VirtualHost><VirtualHost 10.0.2.15:8081>ServerNname host.example2.com...</VirtualHost>
虚拟主机可以基于
我们在浏览器中打交道的是一堆url:
http://www.example.com/index.htmlhttp://www.example.com/faq.html?#question10http://www.example.com:8080/cgi-bin/draw.cgi?type=recthttp://user:pass@www.example.com/
浏览器通过GET或POST想服务器发送请求
GET /index.html HTTP/1.1 Host:www.example.com
服务器此时需要根据这个路径发送一个合适的文件给浏览器。
比如,前面请求的 /index.html 对应磁盘的哪个文件。则需要DocumentRoot指定一个目录作为根目录。
比如:
DocumentRoot /var/www
或
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
每一个虚拟主机也都该指定自己的DocumentRoot
还有一个ServerRoot的东西,是用来配置服务器的配置文件、日志文件等所在目录的,与这儿没什么关系。
可能还需要访问位于DocumentRoot之外的文件
Alias /docs /var/web
这样一来,http://www.exemaple.com/docs/... 被映射到该目录 www.zhishiwu.com
还有一个ScriptAlias,功能类似,只是其内容均被视为脚本。
ScriptAlias /cgi-bin/ "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/"
这两个命令还有两个对应的支持正则匹配的版本
AliasMatch
ScriptAliasMatch
比如:
linux 可以使用soft link方式(并在Option中设置FollowSymLinks)
使用mod_userdir模块的UserDir指令
当然实在不存在的东西,只能404错误了
对目录的单独设置是通过Directory进行的
<Directory /var/web/dir1>Options +Indexes</Directory>
对文件的单独设置是通过Files进行
<Files private.html>Order allow,denyDeny from all</Files>
在路径上,尽管它们都可以接受shell风格通配符,但更复杂的匹配则需要使用相应的支持正则的版本
DirectoryMatch
FilesMath
可以通过在目录下放置一个.htaccess文件对该目录进行控制。
主配置文件内的:
<Directory /www/htdocs/example>AddType text/example .exm</Directory>
等价于在该目录下的.htaccess文件中放入:
AddType text/example .exm
但这个不建议被使用(除非没有主配置文件的设置权限)了。
.htaccess 文件的名字可以改成其他的,通过 AccessFileName指令
该文件内可以使用哪些指令,可通过AllowOverride进行设置
AllowOverride 设置为None(默认值是All) 可完全禁止 .htaccess的使用
与前面的Directory和Files针对的磁盘文件路径不同,Location设置的是URL地址中路径部分。
比如:
<Location /private>Order Allow,DenyDeny from all</Location>
将禁止访问http://www.example.com/private123等所有以 /private 开头的路径
这个东西会3组模块(真的比较繁...,使用LoadModule加载):
首先设置认证类型(使用AuthType指令,目前只支持两种?)
根据认证类型选择认证支持模块(通过AuthBasicProvider或AuthDigestProvider)设置,提供密码等验证信息
AuthBasicProvider
AuthDigestProvider
设置授权支持模块(参考Require指令?),意图是:如何使用前面的密码信息?
AuthType BasicAuthName "From Example.com"#AuthBasicProvider fileAuthUserFile /usr/apache2/passwd/passwordsRequire user debao
AuthType 选择basic认证方式
AuthName 是用户看到的信息(同一个name的浏览器也可以自动处理)
AuthBasicProvider 选择 file,这是默认值
AuthUserFile 设置密码文件
密码文件通过htpasswd来生成,对于digest方式,则需要使用htdigest来生成密码文件。
这二者可以提供简单的基于IP地址的访问控制
Order deny,allowDeny from allAllow from 192.168.0.2
当浏览器请求一个文件时,服务器一般都需要同时提供mime信息
TypesConfig 指令指定一个包含扩展名和mime对应关系的文件
使用 AddType 指令添加新的对应关系
MimeMagicFile 指定一个包含文件开头的魔串和mime对应关系的文件
DefaultType 指定默认类型
对于纯文本文件,如果让服务器提供编码信息。AddDefaultCharset指令可以做到,不过这会覆盖html等文件自身提供的编码信息。
使用 ScriptAlias指令可以设置cgi目录
ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
如果在该目录之外的以某种后缀结尾(.py)的文件作为脚本,则需要使用
<Directory /home/*/public_html>Options +ExecCGIAddHandler cgi-script .py</Directory>
首先是Options中允许CGI脚本执行,然后使用AddHandler设置。
如果某个目录下全是cgi脚本,则可以使用
SetHandler cgi-script
对于python来说,CGI方式应该不怎么使用了吧。主要是wsgi这种方式了。
下载 wsgi : http://code.google.com/p/modwsgi/
LoadModule wsgi_module modules/mod_wsgi.soWSGIScriptAlias /wiki "F:/Moin/mywiki/moin.wsgi"
http://lamp.linux.gov.cn/Apache/ApacheMenu/urlmapping.html
http://lamp.linux.gov.cn/Apache/ApacheMenu/urlmapping.html
http://docstore.mik.ua/orelly/linux/apache/ch01_01.htm
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能