apache

发表于:2007-07-04来源:作者:点击数: 标签:
问题:如果把系统信息和apache信息 在下载的时候去掉。有看到用serverToken os, 疑问:/etc/service的作用,在上面我没有加8888端口 也起作用。 关于limit和 squid配置 2005-04-11 1。遇到问题:(虚拟主机和用IP访问的问题) apache在配置好虚拟主机后 原

问题:如果把系统信息和apache信息 在下载的时候去掉。有看到用serverToken os,

疑问:/etc/service的作用,在上面我没有加8888端口 也起作用。

关于limit和 squid配置


2005-04-11
1。遇到问题:(虚拟主机和用IP访问的问题)
apache在配置好虚拟主机后 原来的documentroot有用吗?
也就是说如果用IP访问时原来的DOCUMENTROOT还起作用吗?

现在做测试的结果是 如果有虚拟主机,那么原来的DOCUMENTROOT就没有用了
。即使用IP访问 也和域名一样

不对,不对


经过XMIN的帮助,了解到,有了虚拟主机后,原来的DOCUMENTROOT确实不起作用,如果遇到用IP访问的情况,那么他返回的是第一个虚拟主机的内容。


******2005-04-12补充如下:
 经过对这个问题的测试,基本上是这样的,如果有了虚拟主机原来定义的DOCUMENTROOT就不再起作用 ,这个时候无论用虚拟主机的域名还是IP访问 返回的都是虚拟主机的DOCUMENTROOT,
 那么如果如果有多个虚拟主机的话 则对IP的访问都默认返回 第一个虚拟主机的配置。
 如果一定要IP访问的内容是原DOCUMENTROOT的内容,那么可以把第一个虚拟主机的DOCUMENTROOT指成 该DOCUMENTROOT,或者就分端口,但是一定不要忘记在加   listen ip:新端口,原来的也要标明是80


2。关于这个虚拟主机的多个故事
NameVirtualHost 61.152.242.109:80
<VirtualHost 61.152.242.109:80>
    ServerAdmin aaron_you@allhyes.com
    DocumentRoot /home/www/allyes/adf/tools/aaron
<Directory "/home/www/allyes/adf/tools/aaron">
Options Indexes followsymlinks

Order deny,allow
Deny from 61.152.242.107
Allow from all
</Directory>
    ServerName aaron.allyes.com
  #  ErrorLog logs/aaron.allyes.com-error_log
  #  CustomLog logs/aaron.allyes.com-aclearcase/" target="_blank" >ccess_log common
</VirtualHost>


A。虚拟主机 必须有
NameVirtualHost 61.152.242.109
虚拟主机的配置如果和原配置冲突,以虚拟主机的配置为准。但只对该虚拟主机生效

B。<Directory "/home/www/allyes/adf/tools/aaron">
</Directory>
Options  只在directory内 有效 indexes表示 可以列出所有内容  followsymlinks表示允许连接到别处。记得是用空格间隔

关于followsymlinks和alias
Alias /xmin/ "/var/www/"

followsymlinks只能写在options里,会对所有连接文件有效
而alias不必写在options里,只对该别名有效

C。访问控制

Order deny,allow(表示两种选择用,号间隔)
Deny from 61.152.242.107
#Allow from all


如果有DENY,必须allow不能为all

如果是域名写法如下:
.example.com

如果涉及到网段写法如下:
61.
61.152.
61.152.241.

第二种控制用.htaccess(默认是这个名字,(如果需要改 在配置里有AccessFileName .htaccess)

做法如此:
1。在需要控制的目录下建立.htaccess文件,对该目录的子目录也同样有效
2。在该文件里写
authname "youyou"
authtype basic
authuserfile /www/allyes/adf/tools/pass
require valid-user

3.用htpasswd -c /www/allyes/adf/tools/pass 用户名  新建立用户
用htpasswd /www/allyes/adf/tools/pass1  用户名2  加新用户

注意:
pass文件需要适当权限

第三种做法

直接把
authname "youyou"
authtype basic
authuserfile /www/allyes/adf/tools/pass
require valid-user

写在<directory 

/directory>
内,效果一样

补充:2005-04-13
注意 如果检查无误 还是没有认证 ,可能是配置文件里没有加
AllowOverride AuthConfig
如果是等于all,没有这个问题


3。
配置apache监听两个端口 只需要
Listen 61.152.242.109:8888
Listen 61.152.242.109:80
配合相应的虚拟主机

2005-04-12

1.完善昨天关于第一个问题的解释

2。CGI的程序必须放在 SERVERALIAS指定的位置下
3。关于DIRECTINDEX
DirectoryIndex index.htm index.html  index.php3 index.php
添加默认index类型

4。关于PHP解释的类型
AddType application/x-httpd-php .css .htm .php3 .php 可以通过在这里添加 新类型


2005-04-13
关于cgi(common gateway interface)是HTTP服务器与你或者其他机器上的机器上的程序进行交谈的工具。
绝大多数 是被用来 解释处理来自表单的输入信息。是网页有交互作用。


写法:
ScriptAlias /cgi-bin/ /var/www/virtual/wwwX.example.com/cgi-bin/

其中/cgi-bin/ 和/var/www/virtual/wwwX.example.com/cgi-bin/ 都是可以修改的
如:ScriptAlias /main/ "/home/www/allyes/adf/main/"


apache默认 该目录下的文件都是可执行的,会尝试去执行他
下面的文件必须有可执行权限
这个和php不同,php下的文件 在浏览器里 只要是可读就是执行了。


出错参考:
CGI程序的源代码或者一个"POST Method Not Allowed"消息
这说明Apache没有被正确配置以执行CGI程序,重新阅读configuring Apache看看遗漏了什么。
一个以"Forbidden"开头的消息
这说明有权限问题。参考Apache error log和下面的文件的权限。

一个"Internal Server Error"消息
查阅Apache error log,可以找到CGI程序产生的出错消息"Premature end of script headers"。对此,需要检查下列各项,以找出不能产生正确HTTP头的原因。
文件的权限
记住,服务器不是以你的用户身份运行的,就是说,在服务器启动后,拥有的是一个非特权用户的权限-通常是``nobody''或者``www'' -而需要更大的权限以允许文件的执行。通常,给予``nobody''足够的权限以执行文件的方法是,对文件赋予everyone execute权限:

chmod a+x first.pl

另外,如果需要对其他文件进行读取或写入,也必须对这些文件赋予正确的权限。

如果服务器被配置为使用suexec则是一个例外。这个程序允许CGI程序根据其所在虚拟主机或用户宿主目录的不同而以不同的用户权限运行。Suexec有极其严格的权限校验,任何校验失败都会使CGI程序运行失败而产生"Internal Server Error"。对此,需要检查suexec的日志文件以发现哪个安全校验出问题了。

路径信息
当你在命令行执行一个程序,某些信息会自动传给shell而无须你操心,比如一个路径,告诉shell你所引用的文件可以在哪儿找到。

但是,在CGI程序通过网站服务器执行时,则没有此路径,所以,你在CGI程序中引用的任何程序(如sendmail)都必须指定其完整的路径,使shell能找到它们以执行你的CGI程序。

一种普通的用法是,在CGI程序的第一行中指明解释器(通常是perl),形如:

#!/usr/bin/perl

必须保证它的确指向解释器。

语法错误
多数CGI程序失败的原因在于程序本身有问题,尤其是在已经消除上述两种错误而CGI挂起的情况下。在用浏览器测试以前,先在命令行中执行你的程序,能够发现大多数的问题。

出错记录
出错记录是你的朋友。任何错误都会在出错记录中有记载,所以你应该首先查看它。如果你的网站空间提供者不允许访问出错记录,那么你应该考虑换一个空间提供者。学会阅读出错记录,可以快速找出问题并快速解决。

2005-04-24(两个错误)
一、老错误!!!

错误写法:
<VirtualHost 192.168.100.102:80>
    ServerAdmin aaron@you.com
    DocumentRoot /var/www/html_aaron/
    ServerName abc.cyy.net

   Options Indexes FollowSymLinks
/****上面这句必须写在</directory>内,否则不生效,apache也不报错

    ErrorLog logs/abc.cyy.net-error_log
    #CustomLog logs/abc.cyy.net-access_log common
</VirtualHost>

在实验是 就出现这个情况,总是报
[error] [client 192.168.100.101]  Directory index forbidden by rule: /home/aaron/

正确写法:

<VirtualHost 192.168.100.102:80>
    ServerAdmin aaron@you.com
    DocumentRoot /var/www/html_aaron/
    ServerName abc.cyy.net
/**  正确写法
<Directory /var/www/html_aaron>
   Options Indexes FollowSymLinks
</Directory>
/**
    ErrorLog logs/abc.cyy.net-error_log
    #CustomLog logs/abc.cyy.net-access_log common
</VirtualHost>

二、访问abc.cyy.net时候,出现的系统出错页面,而不是index.htm

反复查找 发现是
DirectoryIndex index.html index.html.var
默认没有index.htm

另外,下面这条不算优化,但是是Apache安全相关:

ServerSignature Off
ServerTokens ProductOnly

将 ServerSignature 关闭,并增加 ServerTokens ProductOnly 可以使常人无法检测到Apache的实际版本号,有助于Apache的安全。


原文转自:http://www.ltesting.net