WEB應用之httpd基礎入門(五)

2022-03-17 14:27:10 字數 3023 閱讀 3624

前文我們聊到了httpd的啟動使用者和相關許可權的說明,資源壓縮配置、https的實現,回顧請參考今天我們來說說httpd的重定向、hsts、反向**的配置;

首先來了解下重定向吧,什麼意思呢?假如我們訪問乙個資源在伺服器上不存在或者不在我們對應訪問url下,而使用者又不知道我們新的url的情況下,我們怎麼讓使用者訪問到我們新的url呢?平常我們訪問某度,在瀏覽器上直接鍵入某度的網域名稱,然後瀏覽器就直接給我們響應,心細的你還會發現響應的不是http而是https,我們明明沒有用https訪問某度,為什麼響應的頁面卻是https呢?其實這就是http的重定向;所謂重定向就是我們訪問的url對應資源不再原來的位置,而對於使用者來說,使用者數不知道url背後對應的位置上**,如果服務端不配置重定向,那麼使用者訪問到的資源要麼不是最新的要麼訪問不到,為了解決這樣乙個問題,重定向就起著把使用者的請求**到新url上的作用;它的原理是這樣的,使用者訪問某一資源,當服務端收到使用者的請求後,檢查使用者訪問的url對應資源不在原來的位置,此時伺服器會以301或302的狀態碼響應客戶端,意思就是告訴客戶端訪問的資源不再這個位置,對應的位置服務端會通過location首部告訴客戶端,客戶端收到這個響應報文後會再次向服務端新發來的url再次請求,得到響應的資源響應;

httpd實現重定向需要用到redirect指令,它的配置語法是redirect [status] url-path url;status表示狀態資訊,permanent表示返回永久重定向狀態碼 301;temp表示返回臨時重定向狀態碼302. 此為預設值;

示例:把使用者訪問http的請求臨時重定向到https

測試:

示例2:通過rewrite來實現http訪問跳轉為https

測試:

hsts:http strict transport security,翻譯過來就是http嚴格傳輸安全,我們通過上面的示例可以發現乙個點,就是使用者第一次訪問服務端的時候,它倆是通過http協議傳輸資料,眾所周知http協議是明文傳輸資料的,假設使用者第一次訪問服務端的時候,被黑客中間把資料截獲並篡改了,可想而知,客戶端收到不是真正服務端的資訊,而是被黑客篡改了的響應報文,後續客戶端就很可能不是訪問真正服務端響應給客戶端的url,而是黑客篡改後的,這樣一來無疑存在著安全隱患;為了解決這樣的問題,伺服器端配置支援hsts後,會在給瀏覽器返回的http首部中攜帶hsts欄位。瀏覽器獲取到該資訊後,會將所有http訪問請求在內部做307跳轉到https。而無需任何網路過程,這樣一來黑客就無法通過網路來抓取我們的資訊;hsts preload list是chrome瀏覽器中的hsts預載入列表,在該列表中的**,使用chrome瀏覽器訪問時,會自動轉換成https。firefox、safari、edge瀏覽器也會採用這個列表;意思就是在hsts preload list中的**就可以實現在瀏覽器內部跳轉把http跳轉為https;

httpd配置實現hsts是通過header always set strict-transport-security 指令實現,後面要給定乙個最大時長,表示在給定的時長瀏覽器請求該**都會使用https去訪問;

示例:

httpd作為**伺服器;

首先我們來了解**的概念吧,所謂**就是自己沒有能力去做的事,讓別人幫著做,我們把這種幫別人幹事的角色稱為**,我不知道這樣解釋是否正確;比如,我們想去訪問某**,但是該**卻只有特定的網路才可以訪問得到,這個時候如何讓其他非特定網路的其他使用者訪問到呢?其實**就是這個作用,作為客戶端,**可以幫助客戶端去訪問特定網路的資源,作為服務端,**可以幫助服務端響應客戶端的請求;它兩不同的是,在客戶端的那一側我們通常叫正向**,意思就是**客戶端訪問特定網路資源,這只是針對http web服務來講是這樣的,但無論怎樣講,正向**就是幫助客戶端去幹某事;在服務端一側我們通常把**叫做反向**,意思就是它**服務端響應客戶端的請求;**其實我們可以理解為中間的「人」,它既當客戶端,又當服務端,只是我們站在不同的角度對它的稱呼不一樣;正向**的角色的原理就是當客戶端的報文傳送到**伺服器後,**客戶端會更改客戶端的源ip或源埠資訊;在真正服務端上看到的請求通常是正向**的ip和埠;而對於反向**來說,它主要是**服務端響應客戶端的請求,它通常是修改客戶端的目標ip或目標埠,在客戶端響應的報文裡看,通常是**伺服器的作為響應報文的源ip或源埠的響應,而在後端真正提供服務的服務端上看,請求報文通常是反向**伺服器的源ip或源埠;從上面的描述,**伺服器承擔了兩個角色,面向客戶端它是服務端,面向服務端它是客戶端;所以我們在客戶端看到的響應報文源ip資訊和埠都是**伺服器的,在服務端看到的請求報文源埠資訊也都是**伺服器的源埠資訊;通常情況下正向**除了可以幫助客戶端訪問外界資源外,它還可以起到隱藏客戶端的目的;而對於反向**,它除了可以幫助服務端響應客戶端的請求,同時它也可以起到隱藏服務端的作用,這樣一來,客戶端和服務端都是通過**實現了資料互動;在現實生活中我們訪問的web服務通常都是基於這兩種**來的,這也是**最重要的作用;

httpd反向**的功能是基於proxy模組實現的,其中最常用也是最重要的指令是proxypass和proxypassreverse

示例:

linux之httpd基礎應用

例子 用telnet測試80埠的httpd服務請求 首先yum install telnet y 安裝telnet服務,在centos 7 上進行telnet 192.168.10.8 80命令 用telnet 訪問192.168.10.8 的80埠 然後輸入get http 1.1 用get請求去...

網路應用 Web應用之HTTP連線

非永續性連線 nonpersistent http 每個tcp連線最多允許傳輸乙個物件 http 1.0版本使用非永續性連線 永續性連線 persistent http 每個tcp連線允許傳輸多個物件 http 1.1 版本預設使用永續性連線 從客戶端傳送乙個很小的資料報到伺服器並返回所經歷的時間 ...

Linux 應用管理 httpd 服務基礎

服務端 1.安裝http軟體 2.書寫頁面檔案 var www html index.html 3.重啟服務 客戶端 firefox 服務端接收 80埠 httpd程式 documentroot index.html 網路路徑與實際路徑 客戶端 firefox 服務端 var www html ht...