1. 程式人生 > >Linux,WWW伺服器配置

Linux,WWW伺服器配置

WWW伺服器配置

  1. 理論
    WWW服務又稱Web服務,客戶機和伺服器都遵循HTTP協議,預設採用80埠通訊。
  2. 配置
    軟體名稱為Apache,守護程序(服務名)為httpd。
    RHEL Server 5預設不安裝Apache軟體包,需要手工安裝。

安裝啟動簡單測試

  1. 安裝yum install httpd
  2. 啟動service httpd start
    此時開啟網頁頁面是這樣的:
    在這裡插入圖片描述
  3. 建立index.html
    vi /var/www/html/index.html
    welcome
    
    在這裡插入圖片描述

詳細配置說明

與apache伺服器相關的主要目錄和檔案如下:

```
/etc/httpd/conf/httpd.conf  apache伺服器主配置檔案
/var/www/                     預設Web站點的根目錄
/var/www/html      		  網頁文件的預設根目錄
/var/log/httpd/access_log   訪問日誌檔案
/var/log/httpd/error_log    錯誤日誌檔案
.htaccess					  基於目錄的配置檔案,包含其所在目錄的訪問控制和認證等引數
```

主配置檔案/etc/httpd/conf/httpd.conf介紹:

檔案格式
httpd.conf(該檔案較長差不多快1000行)主要由三部分組成:全域性環境(Section1:Global Environment)、主伺服器配置(Section 2:Main server configuration)和虛擬主機(Section 3:Virtual Hosts)。

檔案格式有以下規則:
a.配置語句的語法格式為“引數名稱 引數值”
b.用#表示註釋

雖然配置語句可以放置在檔案的任何位置,但為了方便管理,最好將配置語句放在其相應的部分。
最好配置前先備份預設的httpd.conf

第一區:全域性環境引數
這裡配置的引數將影響整個Apache伺服器的行為;
例如Apache能夠處理的併發請求的數量等。

ServerRoot:相對根目錄,指出伺服器儲存其配置檔案、出錯和日誌檔案等的根目錄。預設為/etc/httpd,該目錄一般含有conf和logs子目錄。
ServerRoot "/etc/httpd"

Timeout:接收和傳送前超時秒數,即響應時間,以秒為單位,預設為120秒。如果超過這段時間仍然沒有傳輸任何資料,那麼Apache伺服器將斷開與客戶端的連線。
Timeout 120

KeepAlive On #開啟永續性連線功能。即當客戶端連線到伺服器,下載完資料後仍然保持連線狀態。 預設為Off

MaxKeepAliveRequests 100 #一個連線服務的最多請求次數,預設為100,設為0則沒有限制。

KeepAliveTimeout 15 #允許保持連線時,可指定連續兩次連線的間隔時間,如果超出設定值則被認為連線中斷。預設為15秒。 即在關閉連線前等待下一次請求的時間。如果伺服器已經完成了一次請求,但在超過了該指令設定的時間間隔後,還沒有收到下一次請求,那麼伺服器就斷開連線。

Listen 80 #伺服器監聽的埠號。 預設會在本機的所有可用IP地址上的TCP80埠監聽客戶端的請求。

第二區:主伺服器配置

ServerAdmin:您的郵件地址,當客戶端訪問伺服器發生問題時,伺服器會向客戶端返回錯誤提示資訊,其中包括管理員的E-mail地址,預設的E-mail地址為[email protected]主機名
ServerAdmin [email protected]

ServerName 伺服器名,指定Apache用於識別自身的名字和埠號。如果此伺服器有域名,則填入域名,否則填入伺服器IP地址。

DocumentRoot:您的文件的根目錄。預設情況下,任何的請求從這個目錄進行應答。
DocumentRoot "/var/www/html"

DirectoryIndex:預設文件,指在Web瀏覽器僅輸入Web站點的域名或IP地址就顯示的網頁,預設不指定網頁名稱時,將顯示指定目錄下地index.html或index.html.var
DirectoryIndex index.html index.html.var

訪問控制(基於主機)

Deny:定義拒絕訪問列表。
Allow:定義允許訪問列表。
Order:指定執行允許訪問列表和拒絕訪問列表的先後順序。
all:表示所有客戶。
域名:表示域內的所有客戶,如linux.com
IP地址:可指定完整的IP地址或部分IP地址,如192.168.0.20。
Order allow,deny:表示先執行允許訪問列表再執行拒絕訪問列表,預設情況下將拒絕所有沒有明確被允許的客戶。
Order deny,allow:表示先執行拒絕訪問列表再執行允許訪問列表,預設情況下將允許所有沒有明確被拒絕的客戶。

mkdir /var/www/html/secure
在此資料夾下建立測試頁面index.html
vi /var/www/html/secure/index.html

vi /etc/httpd/conf/httpd.conf
在指令<Directory "/var/www/html">前新增:
<Directory "/var/www/html/secure">
Order deny,allow
Allow from IP地址
Deny from all
</Directory>

訪問控制(基於使用者名稱和密碼),也稱為認證

Apache支援兩種認證方式:基本(Basic)認證和摘要(Digest)認證,目前通常只使用基本認證。
Apache伺服器利用以下認證引數,可實現對指定目錄的認證控制。使用者訪問到指定目錄的網頁檔案時必須輸入認證使用者名稱和口令,驗證成功後才能訪問。
AuthName 領域名稱:指定使用者認證領域的名稱。
AuthType Basic|Digest:設定使用者認證的方式,一般只使用Basic。
AuthUserFile 檔名:指定認證使用者檔名及其儲存路徑。
AuthGroupFile 檔名:指定認證組群檔名及其儲存路徑。
使用認證引數後還需要使用Require引數進行授權。
Require 使用者名稱列表:授權給指定的使用者。
Require 組群名列表:授權給指定的組群。
Require valid-user:授權給認證使用者檔案中所有的使用者。
AllowOverride,控制那些被放置在.htaccess文件中的指令。他能夠是“All”,“None”,或下列指令的組合:
Options FileInfo AuthConfig Limit

AllowOverride None 不使用.htaccess檔案
All 啟用.htaccess檔案,並且可以使用所有的引數
AuthConfig .htaccess檔案中可包含認證的相關引數
Limit .htaccess檔案中可包含訪問控制的相關引數

訪問控制(基於使用者名稱和密碼修改httpd.conf檔案直接設定指定目錄的訪問控制和認證的相關引數)

直接編輯httpd.conf檔案,設定/var/www/html/test目錄中所有網頁檔案只允許認證使用者訪問

  1. 先建立目標資料夾mkdir /var/www/html/test

  2. 在目標目錄中建立測試頁面vi index.html並編寫內容。
    在這裡插入圖片描述

  3. 修改:/etc/httpd/conf/httpd.conf 直接設定指定目錄的訪問控制和認證的相關引數

    <Directory "/var/www/html/test">
    AllowOverride None
    AuthName "restricted stuff"
    AuthType Basic
    AuthUserFile /etc/httpd/users
    Require valid-user
    </Directory>
    

    在這裡插入圖片描述

  4. 建立認證使用者檔案 /etc/httpd/users ,並設定多名使用者為認證使用者。
    可以使用htpasswd ,-c引數是,第一次建立使用者是該路徑還不存在,加上這個引數路徑自動建立。

    htpasswd -c /etc/httpd/users aaa
    htpasswd /etc/httpd/users bbb
    

    在這裡插入圖片描述

    htpasswd -D /etc/httpd/users bbb  刪除使用者bbb
    
  5. 重啟httpd服務,測試。
    在這裡插入圖片描述

訪問控制(基於使用者名稱和密碼,在指定目錄中建立.htaccess檔案,訪問控制和認證相關引數均儲存在.htaccess檔案)

注意.htaccess檔案為隱藏檔案,該檔名在httpd.conf中使用AccessFileName指令進行了設定,如AccessFileName .htaccess
該檔名可以修改,只需要修改AccessFileName指令後面的值即可。

mkdir /var/www/html/user
vi /var/www/html/user/index.html

http://your ip/user

vi /var/www/html/user/.htaccess

輸入:

AuthName "restricted stuff"
AuthType Basic
AuthUserFile /etc/httpd/users
Require user aaa bbb

修改:/etc/httpd/conf/httpd.conf
在指令<Directory "/var/www/html">前新增:
<Directory "/var/www/html/user">
AllowOverride All
</Directory>

重啟伺服器,訪問http://your ip/user