天天看點

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、配置頁面檔案通路屬性

     Options

     Indexes: 是否允許索引頁面檔案,建議關閉;除非提供專門下載下傳可以打開

     FollowSynLinks: 是否跟随軟連結檔案;不安全。

     SymLinksifOwnerMatch:是屬主的話允許連結

     ExecCGI:是否允許執行CGI腳本;

     All:

     None:

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

給腳本執行權限,腳本執行結果為:

The hostname is: station93.magelinux.com.

The time is: Sat Aug 17 01:11:13 CST 2013.

# 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/"

   <VirtualHost *:8080>

         ServerName www.b.org  

         DocumentRoot "/web/host2/"

   配置檔案編輯完成。

目錄不存在,是以先要建立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/"

          ServerName www.b.org  

          DocumentRoot "/web/host2/"

編輯網頁内容,重新開機服務。這樣基于ip的虛拟主機就可以通路網頁了。

(3)基于主機名的虛拟主機

httpd-2.2: NameVirtualHost

虛拟主機單獨配置:

     CustomLog

     ErrorLog

     <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>

            ServerName www.b.org  

            DocumentRoot "/web/host2/"

然後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,如需轉載請自行聯系原作者