56twe 发表于 2014-9-12 09:46:00

apache虚拟主机配置

一,基本配置:

ServerRoot "/mnt/software/apache2" #你的apache软件安装的位置。
PidFile logs/httpd.pid #第一个httpd进程号文件位置。
Listen 80 #服务器监听的端口号。
ServerName www.clusting.com:80 #主站点名称。
ServerAdmin admin@clusting.com #管理员的邮件地址。
DocumentRoot "/mnt/web/clusting" #主站点的网页存储位置。

1,以下是对主站点的目录进行访问控制:
<Directory "/mnt/web/clusting">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

2,在上面这段目录属性配置中,主要有下面的选项:
Options:配置在特定目录使用哪些特性,常用的值和基本含义如下:
ExecCGI: 在该目录下允许执行CGI脚本。
FollowSymLinks: 在该目录下允许文件系统使用符号连接。
Indexes: 当用户访问该目录时,如果用户找不到DirectoryIndex指定的主页文件(例如index.html),则返回该目录下的文件列表给用户。
SymLinksIfOwnerMatch: 当使用符号连接时,只有当符号连接的文件拥有者与实际文件的拥有者相同时才可以访问。

3,AllowOverride:允许存在于.htaccess文件中的指令类型(.htaccess文件名是可以改变的,其文件名由AccessFileName指令决定):
None: 当AllowOverride被设置为None时。不搜索该目录下的.htaccess文件(可以减小服务器开销)。
All: 在.htaccess文件中可以使用所有的指令。
Order:控制在访问时Allow和Deny两个访问规则哪个优先:
Allow:允许访问的主机列表(可用域名或子网,例如:Allow from 192.168.0.0/16)。
Deny:拒绝访问的主机列表。
DirectoryIndex index.html index.htm index.php #主页文件的设置(本例将主页文件设置为:index.html,index.htm和index.php)

二,服务器的优化 (MPM: Multi-Processing Modules)
apache2主要的优势就是对多处理器的支持更好,在编译时同过使用--with-mpm选项来决定apache2的工作模式。通过httpd -l命令列出apache的工作方式:

1,prefork:如果httpd -l列出prefork.c,则需要对下面的段进行配置:
<IfModule prefork.c>
ServerLimit 2000 #默认的MaxClient最大是256个线程,如果想设置更大的值,就的加上ServerLimit这个参数。生效前提:必须放在其他指令的前面
MaxClients 1500 #最大并发连接数。
StartServers 10 #启动apache时启动的httpd进程个数。
MinSpareServers 10 #服务器保持的最小空闲进程数。
MaxSpareServers 15 #服务器保持的最大空闲进程数。
MaxRequestsPerChild 10000 #每个子进程被请求服务多少次后被kill掉。0表示不限制。
</IfModule>

将MaxRequestsPerChild设置成非零值有两个好处:
1).可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。
2).给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

2,worker:如果httpd -l列出worker.c,则需要对下面的段进行配置:
<IfModule worker.c>
StartServers 4 #启动apache时启动的httpd进程个数。
MaxClients 300 #最大并发连接数。
MinSpareThreads 25 #服务器保持的最小空闲线程数。
MaxSpareThreads 75 #服务器保持的最大空闲线程数。
ThreadsPerChild 25 #每个子进程的产生的线程数。
MaxRequestsPerChild 0 #每个子进程被请求服务多少次后被kill掉。0表示不限制。
</IfModule>

该模式是由线程来监听客户的连接。当有新客户连接时,由其中的一个空闲线程接受连接。服务器在启动时启动两个进程,每个进程产生的线程数是固定的(ThreadsPerChild决定),因此启动时有50个线程。当50个线程不够用时,服务器自动fork一个进程,再产生25个线程。

三,代理和跳转

1,ProxyPass /aa/ http://www.test.com/
   ProxyPassReverse/aa/ http://www.test.com/
没有反向代理设置时,访问http://www.test.com/aa/bb,如果www.example.com对请求进行了redirect至http://www.example.com/cc,那么,客户端就会绕过反向代理,进而访问http://www.test.com/aa/cc。如果设置反向代理,则会在转交HTTP重定向应答到客户端之前调整它为http://www.test.com/aa/bb/cc,即是在原请求之后追加上了redirect的路径.

2,! 指令当你不想对某个子目录进行反向代理的时候就有用了,例如:
ProxyPass /aa/ !
ProxyPass / http://www.test.com

3,跳转以.html结尾的域名
RewriteEngine on
RewriteRule ^/(.*).html$ http://www.test.com/

页: [1]
查看完整版本: apache虚拟主机配置