天天看點

Linux ❀ HTTP-超文本傳輸協定

HTTP:超文本傳輸協定

HTTP服務:超文本傳輸協定(HyperText Transfer Protocal),是網際網路上最廣泛的一種網絡協定,所有的WWW檔案都必須遵守這個标準。

一、WEB伺服器

WEB伺服器:指網站伺服器,是指駐留與網際網路上某種類型計算機的程式,可以向浏覽器等WEB用戶端提供文檔,也可以放置網站檔案,讓全世界浏覽;可以放置資料檔案,讓全世界下載下傳。

目前最主流的三個WEB服務區是Apache和Microsoft和Internet-資訊伺服器(Internet Information Services,IIS)unix nginx。

WEB伺服器也稱為WWW伺服器(world wide web),主要功能是提供網上資訊浏覽服務。WEB伺服器是可以向送出請求的浏覽器提供文檔的程式。

  1. 伺服器是一種被動程式:隻有當Internet上運作其他計算機中的浏覽器發出的請求時,伺服器才會響應。
  2. Internet上的伺服器也成為WEB伺服器,是一台在Internet上具有獨立的IP位址的計算機,可以向Internet上的客戶機提供WWW、Email和FTP等各種Internet服務。
  3. 當WEB浏覽器(用戶端)連接配接到伺服器上并請求檔案時,伺服器将處理該請求并将檔案回報到該浏覽器上,附帶的資訊會告訴浏覽器如何檢視該檔案(即檔案類型)。伺服器使用HTTP與客戶機浏覽器進行資訊交流,這就是人們常把他們稱為HTTP伺服器的原因。

WEB伺服器不僅能夠存儲資訊,還能在使用者通過WEB浏覽器提供的資訊的基礎上運作腳本和程式。

而Linux下的WEB伺服器軟體使用的是apache,開放源代碼的apache伺服器起初由Illinois大學Urbana-Champaign的國家進階計算程式中心開發,後來Apache被開放源代碼團體的成員不斷地發展和加強。逐漸,它開始在功能和速度上超越其他Web伺服器。

LAMP:即Linux+Apache+Mysql+Perl/PHP/Python一組常用來搭建動态網站或者伺服器的開源軟體,本身都是各自獨立的程式,但是因為常被放在一起使用,擁有了越來越高的相容度,共同組成了一個強大的Web應用程式平台。随着開源潮流的蓬勃發展,開放源代碼的LAMP已經與J2EE和.Net商業軟體形成三足鼎立之勢,并且該軟體開發的項目在軟體方面的投資成本較低,是以受到整個IT界的關注。從網站的流量上來說,70%以上的通路流量是LAMP來提供的,LAMP是最強大的網站解決方案.

Linux ❀ HTTP-超文本傳輸協定

二、HTTP服務介紹

(1)通路格式:

1、​​​http://域名/資源​​​ 2、​​http://IP位址​​:端口号

(2)HTTP的協定端口号為80、8080;

HTTPS(加密的HTTP服務)的協定端口号為443。

(3)HTTP是應用層協定

(4)HTML(标準通用标記語言下的一個應用)文檔格式

(5)URL(浏覽器統一資源定位器)

1、HTTP的運作原理

①使用者輸入URL

​​​http://www.joes-hardware.com:80/tools.html​​​ ②擷取主機名

​​www.joes-hardware.com​​ ③擷取端口号

80

④連接配接到161.58.228.45(伺服器)的端口号80

⑤客戶機發送一條HTTP GET請求

⑥客戶機從伺服器讀取HTTP服務

2、HTTP的連接配接過程

(1)Web浏覽器使用HTTP指令向一個特定的伺服器發出Web頁面請求。

(2)若該伺服器在特定端口(通常是TCP 80端口)處接收到Web頁面請求後,就發送一個應答并在客戶和伺服器之間建立連接配接。

(3)伺服器Web查找用戶端所需文檔,若Web伺服器查找到所請求的文檔,就會将所請求的文檔傳送給Web浏覽器。若該文檔不存在,則伺服器會發送一個相應的錯誤提示文檔給用戶端。

(4)Web浏覽器接收到文檔後,就将它顯示出來。

(5)當用戶端浏覽完成後,就斷開與伺服器的連接配接。

HTTP響應:通過封包傳回一個狀态碼

–200 正常,請求成功

–401 靜止通路,未授權(沒有登入或者登陸失敗)

–403 禁止通路,通常代表已認證通過,但沒有通路權限

–404 未找到資源

–500 伺服器内部錯誤(伺服器内部出現問題,伺服器内部故障,或者通路過多沒有顯示就可能會出現500錯誤)

Linux ❀ HTTP-超文本傳輸協定

代理伺服器:S和C之間的通路實體

緩存伺服器:特殊的代理伺服器

網關伺服器:一個http/FTP網關伺服器C—http – 8080 (FTP<–>HTTP )-----S FTP

<源ip位址><源端口号> <目标ip位址><端口>

3、在Linux中的相關配置

(1)首先挂載CD光牒sr0并且配置yum檔案:

[root@localhost httpd]# mount /dev/sr0 /mnt(挂載CD光牒sr0)
[root@localhost httpd]# vim /etc/yum.repos.d/base.repo(配置yum檔案)                
[base]   (源)
name=base   (源名稱)
baseurl=file:///mnt     (本地連接配接)
gpgcheck=0   
[root@localhost httpd]# yum install -y httpd
[root@localhost httpd]# systemctl start httpd   (系統服務的操作)
- Start---開始
- Restart---重新開機
- Stop---停止

[root@localhost httpd]# Systemctl stop firewalld(關閉防火牆)
[root@localhost httpd]# Setenforce 0 (停止ICE linux)      

(2)在搭建HTTP服務:

[root@localhost httpd]# yum install httpd -y      

啟動腳本:/usr/lib/systemd/system/httpd.service

所需RPM包:httpd-2.4.6-17.el7.x86_64.rpm

主配置目錄:/etc/httpd/conf

子配置目錄:/etc/httpd/conf.d(apache是一個子產品化的一個配置服務,是以我們可以根據每個子產品進行一些配置,不僅對程式本身進行子產品化配置對配置檔案也進行了子產品化配置)

預設網站存放路徑:/var/www/html/

4、主配置檔案的介紹:

打開主配置檔案:

[root@csa ~]# vim /etc/httpd/conf/httpd.conf      

下面為主配置檔案的一些内容與解析:

ServerRoot "/etc/httpd"     (服務配置檔案的根)
Listen 80                                 
Include conf.modules.d/*.conf     
User apache                      (程序屬主)
Group apache
ServerAdmin root@localhost    (服務管理者郵箱)
ServerName 0.0.0.0:80 
<Directory />                      (目錄标簽)
    AllowOverride none            (可以覆寫前面的配置)
    Require all denied              (禁止通路根)
</Directory>                                  
DocumentRoot "/var/www/html"
<Directory "/var/www">
    AllowOverride None
    Require all granted
</Directory>
<Directory "/var/www/html">
    Options Indexes FollowSymLinks  (選項索引跟蹤軟連接配接)
    AllowOverride None
    Require all granted 
</Directory>
<IfModule dir_module>
    DirectoryIndex index.html    (索引目錄為index.html)
</IfModule>
<Files ".ht*">    (安全政策控制檔案都是以.ht開頭)
    Require all denied
</Files>
ErrorLog "logs/error_log"     (連結到日志的檔案)
LogLevel warn
<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
%h---用戶端IP
%l---使用identd時才會有資訊,一般情況下都是-
%u---遠端使用者(從驗證擷取到的)
%t---收到請求時的時間
%r---請求的首行
%s---伺服器端傳回的狀态碼
%b---除HTTP頭以外的傳回的位元組數
%{Referer}i---從那個頁面連結跳轉到的此頁面
%{User-agent}i---使用者的User-Agent
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "logs/access_log" combined
</IfModule>
<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>
<IfModule mime_module>
    TypesConfig /etc/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>
AddDefaultCharset UTF-8
<IfModule mime_magic_module>
    MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on   (支援發送檔案)
IncludeOptional conf.d/*.conf      

5、配置HTTP的基本功能:

(1)下面是apache的所有配置檔案存放的目錄:

[root@csa ~]# ll /etc/httpd/
total 4
drwxr-xr-x. 2 root root   35 Oct  27 11:53 conf
drwxr-xr-x. 2 root root   93 Oct  8 10:20 conf.d
drwxr-xr-x. 2 root root   4096 Oct  8 10:20 conf.modules.d
lrwxrwxrwx. 1 root root   19 Oct  8 10:14 logs -> ../../var/log/httpd
lrwxrwxrwx. 1 root root   29 Oct  8 10:14 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx. 1 root root   10 Oct  8 10:14 run -> /run/httpd      

(2)網頁預設的存放路徑:

[root@csa ~]# ll /var/www/
total 0
drwxr-xr-x. 2 root root  6 Sep 17  2015 cgi-bin
drwxr-xr-x. 5 root root 76 Dec 29  2013 html      

cgi-bin是一種特殊的目錄,在進行互動式的www通路(如填寫線上表格)時,需要對伺服器上有相應程式對通路這輸入的資訊進行處理,這寫程式就是就是cgi程式。而這些程式隻能放在cgi-bin這個目錄。

(3)apache的主配置檔案:

[root@csa ~]# vim /etc/httpd/conf/httpd.conf      

6、HTTP的其它配置

(1)預設的通路界面:

啟動HTTP服務

[root@csa ~]# systemctl restart httpd.service      

然後打開浏覽器,輸入IP位址就會看到下面的apache界面,表示你的HTTP服務啟動成功。

Linux ❀ HTTP-超文本傳輸協定

(2)通路靜态界面:

[root@csa ~]# vim /var/www/html/index.html
Nihao~      

重新整理浏覽器界面,即可看到效果。

(3)基于IP位址對WEB伺服器的通路–域名+IP+端口号:

執行個體:建立一個192.168.253.150的網站,檔案存放在/www/150,内容顯示為this is 192.168.253.150

[root@csa ~]# nmcli connection modify eno16777736 +ipv4.addresses 192.168.253.150
給eno16777736網卡加上一個192.168.253.150的IPV4位址
[root@csa ~]# vim /etc/httpd/conf.d/vhost.conf 
<directory "/www">
          AllowOverride None
            options none
           require all granted
</directory>
<virtualhost 192.168.253.150:80>
          documentroot "/www/150"
          servername 192.168.253.150
</virtualhost>
(使用wq!進行強制儲存)
[root@csa ~]# cd /etc/httpd/conf.d/
[root@csa conf.d]# mkdir /www/150 -pv
mkdir: created directory ‘/www’
mkdir: created directory ‘/www/150’
[root@csa conf.d]# echo this is 150 > /www/150/index.html
[root@csa conf.d]# systemctl restart httpd.service      

實驗檢視:

Linux ❀ HTTP-超文本傳輸協定

(4)基于不同的端口對WEB伺服器的通路:

建立一個網站,檔案存放在/www/10000,内容顯示為this is 10000。

[root@csa conf.d]# vim /etc/httpd/conf.d/vhost.conf 
</virtualhost>
LISTEN 10000
<virtualhost 192.168.253.150:10000>
        servername 192.168.253.150:10000
        documentroot "/www/10000" 
</virtualhost>
(使用wq!進行強制儲存)
[root@csa conf.d]# mkdir /www/10000 -pv
mkdir: created directory ‘/www/10000’
[root@csa conf.d]# echo this is 10000 > /www/10000/index.html
[root@csa conf.d]# systemctl restart httpd.service      

實驗檢視:

Linux ❀ HTTP-超文本傳輸協定

(5)基于域名對WEB伺服器的通路:

建立一個網站,​​​域名為www.haha.com​​,同時也可以使用www1.haha.com通路,檔案存放在/www/hahai目錄,網頁内容為This is haha。

[root@csa conf.d]# vim /etc/httpd/conf.d/vhost.conf 
<virtualhost 192.168.253.150:80>
        documentroot "/www/haha"
        servername www.haha.com
        serveralias www1.haha.com
</virtualhost> 
(使用wq!進行強制儲存)
[root@csa conf.d]# mkdir /www/haha -pv
mkdir: created directory ‘/www/haha’
[root@csa conf.d]# echo this is haha > /www/haha/index.html
[root@csa conf.d]# systemctl restart httpd.service      

繼續閱讀