1. 程式人生 > >linux服務基礎(二)之httpd基礎配置

linux服務基礎(二)之httpd基礎配置

白名單 限制 數量 沒有 鏈接文件 賬號 serve 錯誤 自己

一、安裝httpd服務

CentOS6 默認安裝httpd2.2版本

CentOS7 默認安裝httpd2.4版本

# yum install httpd

二、安裝後相關文件說明

  配置文件: 

  /etc/httpd/conf/httpd.conf
  /etc/httpd/conf.d/*.conf

  服務腳本:

 /etc/rc.d/init.d/httpd
 腳本的配置文件:/etc/sysconfig/httpd  

  主程序文件:   

  /usr/sbin/httpd
  /usr/sbin/httpd.event
  /usr/sbin/httpd.worker

  日誌文件目錄:  

  /var/log/httpd
      access_log: 訪問日誌
      error_log:錯誤日誌

  站點文檔目錄:  

  /var/www/html

  模塊文件路徑:

  /usr/lib64/httpd/modules

三、常用配置

打開主配置文件:

vim /etc/httpd/conf/httpd.conf

  1. 修改監聽的IP和Port 

  Listen [IP:]PORT
    省略ip表示監聽所有ip,listen可重復出現多次
實例:
    # Listen 80
    # Listen 192.168
.1.103:8080

  2. 持久連接

  Persistent Connection: 每個連接獲取資源完成後不會斷開連接,而是繼續等待其他的請求完成

    如何斷開?

      數量限制: 默認100

      時間限制: 可配置

    缺陷: 對並發訪問量較大的服務器,持久連接功能會使有些連接得不到響應

    折中解決辦法: 使用較短的持久連接時間

      Note: httpd-2.4版本支持毫秒級持久時間

    開啟或關閉持久連接:

      KeepAlive On|Off  //打開或關閉持久連接
          MaxKeepAliveRequests #  //最大持久連接數
          KeepAliveTimeout #  //持久連接超時時長
實例:
       # telnet 102.168.1.103 80
       # GET / HTTP/1.1
       # Host: 192.168.1.103

  3. MPM

  Multipath Process Module: 多道處理模塊

  有三種模型:

    prefork: 多進程模型,每個進程響應一個請求

      一個主進程:負責生成n個子進程,子進程也稱為工作進程,每個子進程處理一個用戶請求,即便沒有用戶請求,也會預先生成多個空閑進程,隨時等待請求到達;最大不超過1024個

    worker: 多線程模型(多進程生成,一個進程生成多個線程),每個線程響應一個請求

    event: 事件驅動模型,一個線程響應多個請求

查看靜態編譯的模塊
# httpd -l
查看靜態編譯及動態裝載的模塊
# httpd -M
更換使用的httpd程序
  # vim /etc/sysconfig/httpd
  # HTTPD=/usr/sbin/httpd.worker
重啟服務生效

prefork的配置:

      <IfModule prefork.c>
                StartServers       8        # 服務啟動時啟動多少個進程
                MinSpareServers    5        # 最少空閑進程數
                MaxSpareServers   20        # 最大空閑進程數
                ServerLimit      256        # 為maxclients所準備的在其服務器生命周期內所允許的最大值,進程數量最大值
                MaxClients       256        # 服務器端最多允許啟動多少個進程,也即是服務器端最多允許多少個客戶端同時請求資源
                MaxRequestsPerChild  4000    # 一個進程最多響應多少次的請求                                                
           </IfModule>

worker的配置:

      <IfModule worker.c>
                StartServers         4    # 服務器啟動時啟動多少個進程
                MaxClients         300    # 服務器端啟動的最大線程數
                MinSpareThreads     25    # 最少空閑線程數
                MaxSpareThreads     75    # 最大空閑線程數
                ThreadsPerChild     25    # 每個進程所能夠啟動的線程數
                MaxRequestsPerChild  0    # 每個線程所能夠響應的最大請求數量,0表示不受限制
          </IfModule>

  4. DSO 動態共享對象,支持模塊動態裝卸載   

    LoadModule <mod_name> <mod_path>
        /etc/httpd/modules --> /usr/lib64/httpd/modules

  5. 定義‘Main‘ server的文檔頁面路徑

    DocumentRoot指向的路徑為URL路徑的起始位置   

      DocumentRoot "/var/www/html"
實例: 主配置文件中修改:
    # DocumentRoot "/www/htdocs"
   # Directory "/www/htdocs">

  6. 站點訪問控制

  可基於兩種類型的路徑指明對那些資源進行訪問控制

    文件系統路徑:

      <Directory ""></Directory> 對目錄中所有文件控制

      <File ""></File> 對單個文件控制

      <FileMatch ""></FileMatch> 對模式匹配的文件進行控制,最好不用

    URL路徑:

      <Location ""></Location>

   訪問控制機制:

      基於來源地址

      基於賬號

  7. Directory中基於來源地址實現訪問控制

    (1)Options

      所有可用特性:Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews

        Indexes: 索引

          實例:
            默認是由indexes配置,如果在documentroot目錄下沒有index.html或者index.html.var
            訪問時會列出文件列表

            不啟用Indexes: -Indexes

        FollowSymlinks: 允許跟蹤符號鏈接文件
          實例:
            ln -sv /etc/issue /www/htdocs/issue.html
            瀏覽器訪問: 192.168.1.103/issue.html可以訪問
            如果要去掉FollowSymlinks: 前面加個-號

      options裏面什麽選項都不要可以設置為none 

    (2)基於來源地址的訪問控制機制

      Order: 檢查次序

        Order allow,deny: 相當於建立白名單

        Order deny,allow: 相當於建立黑名單

      Allow from

      Deny from

      來源地址:

        IP

        NetAddr        

          192.168.1
          192.168.1.0
          192.168.1.0/24
          192.168.1.0/255.255.255.0
實例:
   Order allow,deny
    Deny from 192.168.1.110
    Allow from 192.168.1

  測試: elinks -dump http://192.168.1.102  //當前主機訪問自己是可以的

  8. 定義默認主頁面

    DirectoryIndex index.html index.html.var

  9. 日誌設定

  

 

linux服務基礎(二)之httpd基礎配置