問題:如果把系統信息和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的安全。