第十周作業

Httpd

httpd是Apache 超文本傳輸協議(HTTP)服務器的主程序。被設計為一個獨立運行的后臺進程,它會建立一個處理請求的子進程或線程的池。

程序環境配置文件:
  1. /etc/httpd/conf/httpd.conf  httpd 主配置文件
  2. /etc/httpd/conf.d/*.conf    httpd自建配置文件(此為httpd默認目錄可以以讀取所有.conf結尾的配置文件)
  3. /usr/sbin/httpd httpd-2.4 支持(Multi-Processing Module,多進程處理模塊)的動態切換。
  4. /var/log/httpd/{access_log(訪問日志),error_log(錯誤日志)}
  5. /var/www/html/;  站點文檔(web頁面)
  6. /usr/lib64/httpd/modules ; 模塊文件路徑

服務啟動方法:

CentOS 7:   systemctl {start | stop | restart | enable | disable } httpd.service
CentOS 6:   server httpd.service {start | stop | restart | enable | disable}

 多進程處理模塊:

  1. prefork:多進程模型,一個集成響應一個請求。
  2. worker:多進程多線程模型,一個線程響應一個請求。
  3. event:時間驅動模型,一個進程響應n個請求。
 切換MPM的工作模式只需編輯/etc/sysconfig/httpd/conf.modules.d/00-mpm.conf 里邊將三種工作模式前面的# 號去掉即可(不可同時啟用)
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so    啟用
......
#LoadModule mpm_worker_module modules/mod_mpm_worker.so     禁用
......
#LoadModule mpm_event_module modules/mod_mpm_event.so      禁用
重啟服務并檢查語法錯誤
[[email protected] ~]# httpd -t
[[email protected] ~]# systemctl restart httpd.service
Syntax OK
使用命令查看效果  httpd -M 
mpm_prefork_module (shared) 啟用狀態
 
語法錯誤檢查AH00558 修復辦法
[[email protected] ~]# httpd -t
AH00558: httpd: Could not reliably determine the server`s fully qualified domain name, using localhost.localdomain. Set the `ServerName` directive globally to suppress this message
Syntax OK
 

~]# vim /etc/httpd/conf/httpd.conf 
#
ServerName www.example.com:80  第95行 去掉前面的 # 號
#

簡述 request

request 對象是http事物中客戶端帶有客戶信息并發出數據請求,然后在獲取數據后返回至客戶端。request主要用來處理客戶瀏覽器提交請求的各項參數和選項。

報文語法格式:

request 請求報文

<method> <request-URL> <version>

<HEADERS>

<entity-bobu>

response 響應報文

<version> <status> <reason-phrase>

<HEADERS>

<entity-boby>

method 方法:
  1. GET:從服務器獲取一個資源;
  2. HEAD:只從服務器獲取文檔的響應首部;
  3. POST:向服務器發送要處理的數據;
  4. PUT:將請求的主題部分存儲在服務器上;
  5. DELETE:請求上述服務器上的指定文檔;
  6. TRACE:追蹤請求到達服務器中間經過的代理服務器;
  7. OPTIONS:請求服務器返回對指定資源的支持使用的請求方法;
status 狀態嗎:
  1. 1xx:100-101;信息提示;
  2. 2xx:200-206;成功;
  3. 3xx:300-305;重定向;
  4. 4xx:400-415;客戶端錯誤信息;
  5. 5xx:500-505;服務器錯誤信息;
常用狀態碼:
  1. 200:成功,請求的所有數據通過響應報文的entity-boby部分發送ok;
  2. 301:請求去的URL指向的資源已經被刪除,但在響應的報文中通過首部Location指明了資源現在所處的新位置,Moved premanently。
  3. 302:與301相似,但在響應報文中Location指明資源所處臨時新位置,Found。
  4. 401:需要輸入賬號和密碼認證方法訪問資源;Unauthorized
  5. 403:請求被禁止;Forbidden
  6. 404:服務器無法找到客戶端請求的資源;Not Found
  7. 500:服務器內部錯誤,Internal Server Error
  8. 505:代理服務器從后端服務器收到一條偽響應;Bad Gateway
協議查看分析工具
  • tcpdump
  • tshark
  • wireshark

 

Httpd 虛擬機

在一臺物理主機上使用根據httpd配置模擬出多個不同的網站。

事項的三種方案:
  1. 基于IP:虛擬主機至少擁有一個獨立的IP地址;ip相同;但端口不同;
  2. 基于Port:虛擬主機至少擁有一個獨立的port;ip不同,但端口均為默認端口。
  3. 基于FQDN:虛擬主機至少擁有一個FQDN;請求報文首部不同
注意:
  • httpd-2.2 虛擬知己不可與中心主機混用,使用前要先禁用“main”主機;注釋掉中心主機的DocumenRoot指令即可;
  • httpd-2.4 配置即可使用。
配置一臺虛擬主機:
主機擁有兩個塊網卡:
  1. 192.168.199.175 ; 為虛擬主機 A 域名www.acb.io 資源目錄為/data/web/abc
  2. 192.168.199.185;為虛擬主機 B 域名www.xyz.io 資源目錄為/data/web/xyz
~]# mkdir -pv /data/web/{abc,xyz}
~]# vim /data/web/abc/index.html
    <h1> www.abc.io </1h>
~]# vim /data/web/xyz/index.html
   <h1>www.xyz.io </h1>

關閉防火墻和selinux
修改httpd的默認環境配置
~]# yum -y insatll httpd
~]# vim /etc/httpd/conf/httpd.conf
ServerName www.example.com:80   第95行 啟用本行.

賦權給目錄訪問權限
DocumentRoot "/data/web/www"   第120行;修改目錄.
<Directory "/data/web/www">   第133行;授權目錄權限.

創建虛擬機--IP不同
1、創建A、B虛擬主機的配置文件
虛擬主機A
[[email protected] conf.d]# vim abc.conf
<VirtualHost 192.168.199.175:80>
    ServerName www.abc.io
    DocumentRoot "/data/web/abc"
    <Directory "/data/web/abc">
        Options None
        AllowOverride None
        Require all granted
    </Directory>
    CustomLog "logs/abc_access_log" combined
</VirtualHost>

 
虛擬主機B
[[email protected] conf.d]# vim xyz.conf
<VirtualHost 192.168.199.185:80>
    ServerName www.xyz.io
    DocumentRoot "/data/web/xyz"
    <Directory "/data/web/xyz">
        Options None
        AllowOverride None
        Require all granted
    </Directory>
    CustomLog "logs/xyz_access_log" combined
</VirtualHost>

 
2、驗證語法錯并重載配置文件
httpd -t
apachectl reload
3、瀏覽器通過iP訪問

192.168.199.175

192.168.199.185

創建虛擬機–端口不同
1、修改的ip和端口
[[email protected] conf.d]# cat /etc/httpd/conf.d/xyz.conf 
listen 8090      添加監聽端口
<VirtualHost 192.168.199.175:8090>  修改ip地址(A配置地址)及端口
    ServerName www.xyz.io
    DocumentRoot "/data/web/xyz"
    <Directory "/data/web/xyz">
        Options None
        AllowOverride None
        Require all granted
    </Directory>
    CustomLog "logs/xyz_access_log" combined
</VirtualHost>

 
2、瀏覽器通過iP訪問

192.168.199.175:80

192.168.199.185:8090

創建虛擬機–主機名不同
1、修改A 的配置文件
<VirtualHost 192.168.199.175:80>  
    ServerName www.abc.io
    DocumentRoot "/data/web/abc"
    <Directory "/data/web/abc">
        Options None
        AllowOverride None
        Require all granted
    </Directory>
    CustomLog "logs/abc_access_log" combined
</VirtualHost>

2、修改B 的配置文件
<VirtualHost 192.168.199.175:80>  
        ServerName www.xyz.io
        DocumentRoot "/data/web/xyz"
        <Directory "/data/web/xyz">
                Options None
                AllowOverride None
                Require all granted
        </Directory>
        CustomLog "logs/xyz_access_log" combined
</VirtualHost>

3、測試需要確認hosts 能夠做地址解析
~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.199.175    www.abc.io www.xyz.io   添加解析
4、瀏覽器輸入域名測試
www.abc.io
www.xyz.io

站點訪問控制

授權訪問分為白名單(僅允許訪問,黑名單禁止訪問兩種)

全局連接授權管理,編輯配置問價*.conf 定義在 RequireAll 下
  • 黑名單:
  1. Requireall denied 全部禁止

單IP禁止訪問

  1. Requireall granted 需要開啟全部允許
  2. Require not ip 192.168.199.10

IP段禁止訪問

  1. Require all granted 需要開啟全部允許
  2. Require not ip 192.168.199.1 192.168.1.200
  • 白名單:
  1. Require all granted 全部允許

           指定IP地址允許訪問

  1. Require  ip 192.168.2.1   
  2. Require all denied 全部禁止       
           IP段允許訪問
  1. Require all denied
  2. Require  ip 1921.68.2.1 192.168.2.200
基于主機名禁止和允許:

允許用戶訪問

  1. Require host DESKTOP-811RO48   允許訪問
  2. Require all denied   全部禁止

禁止用戶訪問

  1. Require not host DESKTOP-811RO48
  2. Require all granted  全部允許

基于用戶的訪問控制:

1、生成賬號密碼文件:
[[email protected]_35_189_centos conf.d]# mkdir /data/web/www/admin 創建文件夾

[[email protected]_35_189_centos conf.d]# htpasswd -c /data/web/www/admin/.htpasswd tom  首次創建授權用戶密碼文件
New password: 
Re-type new password: 
Adding password for user tom

[[email protected]_35_189_centos conf.d]# htpasswd /data/web/www/admin/.htpasswd jerry  向文件添加授權用戶
New password: 
Re-type new password: 
Adding password for user jerry

2、創建tom、jerry的授權用戶管理

[[email protected]_35_189_centos conf.d]# vim /etc/httpd/cond.d/admin.conf 
<Directory "/data/web/www/admin">
        Options None
        AllowOverride None
        AuthType basic
        AuthName "Admin Area,plz enter username and password."
        AuthUserFile "/etc/httpd/conf.d/.htpasswd"  指定授權用戶文件
        Require user jerry obama    添加授權用戶訪問
</Directory> 

瀏覽器打開測試:192.168.199.1/admin
分別使用用戶 jerry、tom、obama登錄查看效果
3、用戶組訪問控制:
1、添加用戶組授權文件:
vim /etc/httpd/conf.d/./htgroup

adminals:tom jerry 增加組成員,添加配置段
2、修改配置文件添加授權組配置段
<Directory "/data/web/www/admin">
        Options None
        AllowOverride None
        AuthType basic
        AuthName "Admin Area,plz enter username and password."
        AuthUserFile "/etc/httpd/conf.d/.htpasswd"
        AuthGroupFile "/etc/httpd/conf.d/.htgroup"    添加授權組
        Require group adminals    標明授權組名
</Directory> 

3、打開瀏覽器輸入主機地址測試訪問;

持久連接配置

1、修改配置文件添加配置信息;
[[email protected] conf.d]# vim /etc/httpd/conf.d/kepalive.conf

keepAlive on | off   是否啟用長連接
keepAliveTimeout 30    超時
maxkeepaliveRequests 100  可以保持多少個長連接
使用命令測試  httpd -t 

2、使用telnet 測試

[[email protected] conf.d]# telnet 192.168.199.175 80   輸入服務器ip port
Trying 192.168.199.175...
Connected to 192.168.199.175.
Escape character is ].
GET /index.html HTTP/1.1                    輸入命令
HOST:192.168.199.175                        連續按兩次Enter

HTTP/1.1 200 OK
Date: Fri, 15 Jun 2018 04:05:25 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Fri, 15 Jun 2018 00:52:41 GMT
ETag: 1d-56ea3a211091a
Accept-Ranges: bytes
Content-Length: 29
Content-Type: text/html; charset=UTF-8

<h1>Welcome www.abc.io</h1>

 

原創文章,作者:N28_剛好遇到小熊貓,如若轉載,請注明出處:http://www.npownk.tw/124647

聯系我們

400-080-6560

在線咨詢

工作時間:周一至周五,9:30-18:30,節假日同時也值班

QR code
安徽十一选五分布走势