HTTP基础及基本配置
HTTP基礎及基本配置
1、配置監聽的地址和端口;
? ? Listen [IP:]PORT
? ? ? ? ? ? 例如:Listen 80?監聽所有80端口
2、配置所選用的MPM的屬性
配置使用編譯進不同MPM的httpd,編輯/etc/sysconfig/httpd配置文件,定義如下行:
? ? HTTPD=/usr/sbin/httpd.worker
MPM:多道處理模塊
prefork: 一個進程響應一個請求;
? 主進程功能
? ? ?(1) 綁定特權端口;
? ? ?(2) 派發或回收子進程;
? ? ?(3) 讀取分析主配置文件;
worker:一個進程生成多個線程,一個線程響應一個請求;
? ? ? ? 默認使用的是prefork模型、如果要使用worker模型,要在配置文件里啟用
event:?在httpd-2.2?版本上只是測試的
? ? ? ?httpd命令選項:
? ? ? ? ? ? ?httpd -h:列出所有選項
? ? ? ? ? ? ?httpd -l:顯示核心模塊
httpd -D:顯示所有已裝載的模塊 ?
httpd -t:測試配置文件
? ? ?# vim?/etc/httpd/conf/httpd.conf打開配置文件:
? ? ?<IfModule prefork.c>條件性指令,判斷這個模塊是否存在,存在下面的配置就生效
? ? ?StartServers ? ? ? 8?? ?剛啟動web服務的時候,啟動幾個空閑進程
? ? ?MinSpareServers ? ?5?? 最小空閑進程數
? ? ?MaxSpareServers ? 20?? 最大空閑進程數
? ? ?ServerLimit ? ? ?256?? ?最多允許并發的進程活動個數
? ? ?MaxClients ? ? ? 256?? 服務器允許連進來的客戶端數目
? ? ?MaxRequestsPerChild ?4000?一個進程最多可以處理多少個請求
? ? ?</IfModule>
3、配置服務器支持keep-alived是否支持常連接
? ? ? KeepAlive {On|Off}
? ? ? ? ?對于比較空閑的服務器,建議KeepAlive?on;對于非常忙的服務器,建議KeepAlive?off
? ? ? KeepAliveTimeout 2??最多允許使用2秒
? ? ? MaxKeepAliveRequests 50??一次連接之內,最多允許50個資源請求
4、配置加載的模塊
? ? ? LoadModule foo_module modules/mod_foo.so
5、配置站點根目錄
? ? ? DocumentRoot ""?? ? 定義網頁存放目錄
? ? ?<Directory "FS_PATH">
? ? ?</Directory>
? ? ?<Location "URL">
? ? ?</Location>
例如/var/www/html/images/logo.jpg,根目錄為/var/www/html,那么我們的訪問路徑就是:http://www.magedu.com/images/logo.jpg
6、配置頁面文件訪問屬性
? ? ?<Directory "FS_PATH">
? ? ?Options
? ? ?Indexes: 是否允許索引頁面文件,建議關閉;除非提供專門下載可以打開
? ? ?FollowSynLinks: 是否跟隨軟鏈接文件;不安全。
? ? ?SymLinksifOwnerMatch:是屬主的話允許鏈接
? ? ?ExecCGI:是否允許執行CGI腳本;
? ? ?All:
? ? ?None:
? ? ?</Directory>
7、訪問控制
基于客戶端訪問控制:(基于ip地址訪問控制)
Order:定義allow和deny哪個為默認法則;寫在后面的為默認法則:寫在前面的指令沒有顯式定義的即受后面的指令控制;
? ? (1) Order allow,deny
? ? ? ? ? Allow from 172.16.0.0/16?? 僅允許172.16.0.0/16?網段內客戶訪問
? ? (2) Order allow,deny
? ? ? ? ? Deny from 172.16.4.12 拒絕所有用戶訪問
? ? (3) Order allow,deny
? ? ? ? ? Deny from 172.16.4.12
? ? ? ? ? Allow from 172.16.0.0/16
? ? ? ? ?地址范圍匹配越小的是最佳匹配,172.16.4.12 最小,所以為拒絕172.16.4.12 網段內客戶訪問
基于用戶訪問控制
8、userdir
? ?讓每個用戶都擁有個人站點:http://HOST/~username/
? ?需要啟用UserDir public_html
? ? ? ? 需要設定用戶對家目錄文件的訪問控制權限
9、定義默認主頁面:
? ? ? ? ?DirectoryIndexindex.php index.jsp index.html
? ? ? ? ?默認先找最左側的,也就是index.php
10、配置日志功能 ? ? ? 默認路徑在/var/log/httpd/
日志有兩類:訪問日志(格式需自定義)、錯誤日志
? ?錯誤日志:
? ? ? ?ErrorLog "/path/to/error_log_file"
? ?訪問日志:
? ? ? ?CustomLog /PATH/TO/CUSTEOM_LOG_FILE LOGFORMAT, 例如:
? ? ? ?CustomLog logs/access_log combinedcombined
? ?LogFormat?定義格式
? ? ? 安裝httpd-manual包,service httpd reload重新載入服務,在瀏覽器中鍵入172.16.4.1/manual/就可以在本地訪問了:
? ? ?Log Files?==>?format strings 就可以查看定義的日志格式了
11、設定默認字符集
? ? ? AddDefaultCharset UTF-8
12、路徑別名
? ? ? DocumentRoot "/web/htdocs"
? ? ? http://www.magedu.com/images/logo.gif ?==> /web/htdocs/images/logo.gif
? ? ? 定義別名為/www/static/
? ? ? 訪問路徑就是/www/static/logo.gif
? ?首先:定義Alias /images/ "/www/static/"
? ?然后:創建目錄/www/static/??在目錄下創建文件index.html ? ?在文件里面編輯內容 ? ?
? ?最后:重新載入service httpd reload
? ?我們重新訪問172.16.0.1/images時,看到的內容會變成所定義別名的路徑下的內容。
13、腳本路徑別名:
CGI:協議
? ? ScriptAlias /PATH/ /PATH/TO/SOMFEDIR/
? ? 例如:ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"或者ScriptAlias /cgi-bin"/var/www/cgi-bin"
? ? 注意/cgi-bin和/var/www/cgi-bin后面要保持一致
? ? 操作:
? ? ? ? #cd /etc/httpd/conf
? ? ? ? #mkdir -pv /website/cgi-bin/
? ? ? ? #vim /website/cgi-bin/test.sh
CGI測試腳本
#!/bin/bash
#
cat << EOF
Content-Type: text/html
<pre>
The hostname is: `/bin/hostname`.
The time is: `date`.
</pre>
EOF
給腳本執行權限,腳本執行結果為:
Content-Type: text/html
<pre>
The hostname is: station93.magelinux.com.
The time is: Sat Aug 17 01:11:13 CST 2013.
</pre>
# end of cgi script file
用瀏覽器訪問172.16.4.1/cgi-bin/test.sh 可以訪問到
14、基于用戶訪問控制
? ? ? DocumentRoot "/var/www/html"
? ? ? <Directory "/PATH/TO/DocumentRoot_SUBDIR">
? ? ? Options None
? ? ? AllowOverride AuthConfig?? 是否允許覆蓋
? ? ? AuthName "Realm"?? ? ? ? ?認證名稱
? ? ? AuthType Basic?? ? ? ? ? ? ?認證類型
? ? ? AuthUserFile /path/to/passwords?用戶賬戶文件叫什么,
? ? ? Require jerry tom?? ? ? ? ? ? 哪些用戶可以登陸
? ? ? </Directory>
(1) 建立用戶帳號文件
? ? ?htpasswd -c -m /path/to/password_file USERNAME
? ? ?第一次創建文件添加用戶的時候用-c選項,以后就不能用-c選項了,否則會將原來的文件內容覆蓋的。
(2) 一個配置示例
<Directory "/website/htdocs/downloads">
? ?Options Indexes
? ?AllowOverride AuthConfig
? ?AuthName "Only for employees."
? ?AuthType Basic
? ?AuthUserFile /etc/httpd/conf/.htpass
? ?Require valid-user?? ? ? ?允許所有用戶登陸
</Directory>
重新載入后,當用戶訪問172.16.4.1/website/htdocs/downloads時,會提示用戶輸入密碼。
(3)組
? ?組文件:
? ?組名:用戶1?用戶2?用戶3
? ?AuthGroupFile
? ?Require GRP_NAME
15、虛擬主機?:一個web程序服務于多個站點
虛擬主機類型:
(1)基于端口的虛擬主機:
(2)基于IP的虛擬主機:
(3)基于主機名的虛擬主機:
請求報文首部有一個Host:,保留了主機名稱,所有web服務器收到請求后,能夠看到Host所對應的是哪個主機,這樣基于主機名的虛擬主機才能實現。
虛擬主機和主服務器不能同時使用:關閉主服務器,注釋主服務器的DocumentRoot即可;
每個虛擬主機的定義:
? ?<VirtualHost IP:PORT>
? ? ? ? ServerName
? ? ? ? DocumentRoot ""
? ?</VirutalHost>
(1) 基于端口的虛擬主機
首先確保監聽在所要求的端口,然后關閉主服務器的DocumentRoot,在配置文件?/etc/httpd/conf/httpd.conf中定義:
? ?<VirtualHost?*:80> ?
? ? ? ? ?ServerName?www.a.com ?可以隨便定義,因為它不區別主機名稱
? ? ? ? ?DocumentRoot "/web/host1/"
? ?</VirutalHost>
? ?<VirtualHost?*:8080>
? ? ? ? ?ServerName?www.b.org ?
? ? ? ? ?DocumentRoot "/web/host2/"
? ?</VirutalHost>
? ?配置文件編輯完成。
目錄不存在,所以先要創建mkdir -pv /web/host{1,2}
? ? 然后編輯網頁內容進行測試#vim /web/host1/index.html
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#vim /web/host2/index.html
重啟服務。這樣基于端口就可以訪問網頁了。
(2)基于IP的虛擬主機
例如:
? ?<VirtualHost 172.16.4.1:80>
? ? ? ? ? ServerName?www.a.com ?
? ? ? ? ? DocumentRoot "/web/host1/"
? ?</VirutalHost>
? ?<VirtualHost 172.16.4.1:80>
? ? ? ? ? ServerName?www.b.org ?
? ? ? ? ? DocumentRoot "/web/host2/"
? ?</VirutalHost>
編輯網頁內容,重啟服務。這樣基于ip的虛擬主機就可以訪問網頁了。
(3)基于主機名的虛擬主機
httpd-2.2: NameVirtualHost
虛擬主機單獨配置:
? ? ?CustomLog
? ? ?ErrorLog
? ? ?<Directory "">
? ? ?</Directory>
? ? ?ScriptAlias /cgi-bin/
? ? ?Alias
#NameVirtualHost *:80修改為NameVirtualHost 172.16.4.1:80
? ? ?<VirtualHost 172.16.4.1:80>
? ? ? ? ? ? ServerName?www.a.com ?
? ? ? ? ? ? DocumentRoot "/web/host1/"
? ? ?</VirutalHost>
? ? ?<VirtualHost 172.16.4.1:80>
? ? ? ? ? ? ServerName?www.b.org ?
? ? ? ? ? ? DocumentRoot "/web/host2/"
? ? ?</VirutalHost>
然后service httpd restart
用本機測試先要編輯/etc/hosts
172.16.4.1www.a.com??a.com
172.16.4.1?www.b.org?? b.org
安裝elinks包,測試
#elinks http://www.a.com進入交互式模式測試
#elinks http://www.b.org
#elinks -dump http://www.a.com可以不用進入交互式模式測試
#elinks -dump http://www.b.org
本文轉自 宋鵬超 51CTO博客,原文鏈接:http://blog.51cto.com/qidian510/1280123,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的HTTP基础及基本配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java iText PDF:用 iTe
- 下一篇: SQL Server 2012入门T-S