搜尋
首頁運維linux運維HTTP服務建構實例詳解

HTTP服務建構實例詳解

Jun 27, 2017 am 10:06 AM
http搭建服務

一、簡介
1、認識
#加密網頁(https): tcp:443      明文網頁(http): tcp: 80
survey.netcraft.net         --這個網站上可以查到最新的網站服務器的使用率
超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最廣泛的一種網路協定。所有的WWW文件都必須遵守這個標準。設計HTTP最初的目的是為了提供一個發佈和接收HTML頁面的方法
#2、Apache
Apache HTTP Server(簡稱Apache )是Apache軟體基金會的一個開放原始碼的網頁伺服器,可以在大多數電腦作業系統中運行,由於其多平台和安全性被廣泛使用,是最受歡迎的Web伺服器端軟體之一,其特點如下:
1、支援最新的HTTP/1.1通訊協定
2、擁有簡單且強而有力的基於檔案的設定流程
3.支援通用網關介面
4、支援基於IP和基於網域名稱的虛擬主機
#5、支援多種方式的HTTP認證
6、整合Perl處理模組
7、整合代理伺服器模組
8、支援即時監視伺服器狀態和自訂伺服器日誌
9、支援伺服器端包含指令(SSI)
#10、支援安全性Socket層(SSL)
11、提供使用者會話過程的追蹤
12、支援FastCGI
13、透過第三方模組可以支援JavaServlets
3、安裝:
www.apache.org --apache 官網
# yum install httpd* --安裝httpd服務
# httpd -t --檢查設定檔正確性
# rm -rf /etc/httpd/conf.d/welcome.conf --刪除歡迎介面;因為安裝了httpd-manual ,故可以訪問/ServerIp/manual
 
4、運行於兩種模式:prefork,worker
#prefork模式:
#
prefork是Unix平台上的預設(預設)MPM,使用多個子進程,每個子進程只有一個執行緒。每個行程在某個確定的時間只能維持一個連接,效率高,但記憶體佔用量比較大
這個多路處理模組(MPM)實作了一個非執行緒型的、預先衍生的web伺服器,它的運作方式類似Apache 1.3。它適合沒有線程安全庫,需要避免線程相容性問題的系統。它是要求將每個請求相互獨立的情況下最好的MPM,這樣若一個請求出現問題就不會影響到其他請求。
worker模式:
worker使用多個子程序,每個子程序有多個執行緒,每個執行緒在某個確定的時間只能維持一個連接,記憶體佔用量比較小,適合高流量的http伺服器。缺點是假如一個線程崩潰,整個進程就會連同其任何線程一起”死掉”,所以要保證一個程序在運行時必須被系統識別為”每個線程都是安全的”。
此多路處理模組(MPM)使網路伺服器支援混合的多執行緒多進程。由於使用執行緒來處理請求,所以可以處理海量請求,而係統資源的開銷小於基於進程的MPM。但它也使用了多進程,每個進程又有多個線程,以獲得基於進程的MPM的穩定性。
# httpd -l --查看運行模式,預設為prefork.c
# mv -v /usr/sbin/httpd{,.prefork} --備份prefork模式
# mv -v /usr/sbin/httpd{.worker,} --使用worker模式
二、設定檔詳解
#1、全域環境參數
ServerTokens OS --當伺服器回應主機頭(header)資訊時顯示Apache的版本和作業系統名稱
ServerRoot "/etc/httpd" --伺服器的基礎目錄,一般來說它將包含conf/和logs/子目錄,其它設定檔的相對路徑即基於此目錄。
PidFile run/httpd.pid --第一個httpd行程(所有其他行程的父行程)的行程編號檔案位置。
Timeout 60 --若60秒後沒有收到或送出任何資料就切斷該連線
KeepAlive Off --預設不使用保持連線的功能,即客戶一次請求連線只能回應一個檔案,建議允許
#MaxKeepAliveRequests 100 --在保持連線功能時,設定客戶一次要求連接能回應檔案的最大上限,超過就斷開
KeepAliveTimeout 15 --在使用保持連接功能時,兩個相鄰的連接的時間間隔超過15秒,就切斷連接
.................
#
Listen 80 --伺服器監聽的連接埠號碼;監聽連接埠可以多開
Include conf.d/*.conf --將/etc/httpd/conf.d目錄下所有以conf結尾的設定檔包含進來
User apache --提供服務的子程序的使用者
Group apache --提供服務的子程序的使用者群組
ServerAdmin root@george.com --管理員的郵件地址
ServerName mail.george.com:80 --主網站名稱(網站的主機名稱)
UseCanonicalName Off
DocumentRoot "/var/www/html" --設定Web文件根目錄;但是可以使用符號連結和別名來指向到其他的位置;如不是絕對路徑,則被假定為是相對於ServerRoot的路徑
2.路徑控制參數
DirectoryIndex index.html index.html.var --網站預設網頁檔名,左邊優先
AccessFileName .htaccess --指定保護目錄設定檔的名稱
------------------------------- -------------------------------------------------- ------------------------
--用於封裝一組指令,使之僅對某個目錄及其子目錄生效。 針對檔案系統上的一個目錄
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
#Allow from all
Deny from 192.168.133.22
##Directory-path --可以是一個目錄的完整路徑,或是包含了Unix shell匹配語法的通配符字串。在通配符字串中,"?"匹配任何單一的字符,"*"匹配任何字符序列。也可以使用"[]"來確定字元範圍。在"~" 字元之後也可以使用正規表示式
Options --這個指令的值可以是“None”,“All”,或下列選項的任意組合:Indexes(前面有'-',則關閉網站列目錄的功能,無則反之);Includes;FollowSymLinks;SymLinksifOwnerMatch;ExecCGI;MultiViews
AllowOverride --控制那些被放置在.htaccess檔案中的指令。它可以是All,None(看不到任何.htaccess裡的任何配置),或下列指令的組合:Options;FileInfo;AuthConfig;Limit
Order,Allow ,Deny --控制誰可以獲得服務。 oreder的參數最終以右邊的為準,順序可以逆轉
------------------------- -------------------------------------------------- ------------------------------
--針對指定的檔案可以是在某個Directory下,也可以全域的
Order deny,allow
Allow from all
#
-------------------------------------------------- -------------------------------------------------- -----
-- 允許使用URL"http://servername/server-status"的形式查看伺服器狀態(或是資訊);Location主要是控制URL
SetHandler server-status(server-info)
##Order deny,allow
Allow from all
#########------------------ -------------------------------------------------- -------------------------------------#########Alias ### /url-path /filesystem-path ###--把URL對應到檔案系統路徑;(也可以自己在系統上使用ln -s 軟連結實作哦)############ #################3、目錄存取進行使用者密碼控制(非系統使用者)#### ##### --###理論也可以在Location,file#########Options Indexes FollowSymLinks#######AllowOverride None ###
Order allow,deny
Allow from all
authname "Authenticate yourself"   --瀏覽器開啟該url的提示語
##authtype basic
authuserfile /etc/httpd/userpasswd   --使用者&密碼檔案位置
require valid-user
# htpasswd -c /etc/httpd/userpasswd frank --建立一個允許存取使用者
htpasswd /etc/httpd/userpasswd george - -再創建一個,記得'-c' 參數,是為了創建該密碼文件,只能創建第一個用戶時使用。
注意:如果一個目錄使用密碼控制訪問,那麼在透過網頁瀏覽器列出該目錄的父目錄時,看不到該目錄,也就是說,該目錄被隱藏了。但是可以透過直接輸入url來存取(即使你有帳戶和密碼也一樣)。
4、基於網域的虛擬主機
NameVirtualHost *:80 --新增此配置,將80埠設定為虛擬主機端口
--第一個虛擬主機
ServerName www.george.com
DocumentRoot /var/www/html/
..................
 
--第二個虛擬主機
#ServerName mail.george .com
DocumentRoot /var/www/cgi-bin/openwebmail/
ScriptAlias /mail /var/www/cgi-bin/openwebmail/openwebmail.pl
#< ;Location />
......................
### ####
   實驗的SeverName 參數接IP位址的話,我們也可以做基於IP的虛擬主機
5、日誌參數
# ErrorLog logs/error_log --錯誤日誌的存方位置
LogLevel warn --定義錯誤日誌等級,include: debug, info, notice, warn, error, crit, alert, emerg.
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User- Agent}i\"" combined
..............
LogFormat "%{User-agent}i" agent --該四條是存取日誌的預設格式
CustomLog logs/access_log combined --使用combined 存取日誌格式
%h –客戶端的ip位址或主機名稱
%l –The 這是由客戶端identd 判斷的RFC 1413身份,輸出中的符號"-" 表示此處資訊無效。
%u –由HTTP認證系統所得到的造訪該網頁的客戶名稱。有認證時才有效,輸出中的符號 "-" 表示此處資訊無效。
%t –伺服器完成對請求的處理時的時間。
"%r" –引號中是客戶發出的包含了許多有用資訊的請求內容。
%>s –這個是伺服器回傳給客戶端的狀態碼。
%b –最後這項是傳回給客戶端的不包含回應頭的位元組數。
"%{Referer}i" –此項指明了該請求是從被哪個網頁提交過來的。
"%{User-Agent}i" –此項是客戶瀏覽器提供的瀏覽器識別資訊。
6、SSL加密設定
# yum install -y mod_ssl --安裝加密模組
# vim /etc/httpd/conf.d /ssl。 #SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
SSLCertificateFile /etc/pki/tls/certs/localhost.crt --設定公鑰檔案
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key --配置秘鑰檔案
##
SSLOptions +StdEnvVars
#
伺服器名稱www.george.com
DocumentRoot /var/www/cgi-bin/openwebmail/
ScriptAlias /mail /var/www/ cgi- bin/openwebmail/openwebmail.pl
SSLOptions +StdEnvVars
選項索引
訂單拒絕,允許
允許所有
位置>
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade -1.0 force-response-1.0
CustomLog 日誌/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\ " %b"
6.1、自行設定憑證
# mkdir /etc/pki/test/
# cd /etc /pki/test
## openssl genrsa -out /etc/pki/test/test.key 1024 --秘鑰
## openssl req -new -key test.key -out test.csr
國家名稱(2個字母代碼)[XX]:
cn
##州或省名稱(全名)[]:
廣東##地區名稱(如城市)[預設城市]:
深圳
#組織名稱(如公司)[預設有限公司]: ###它# #####
Organizational Unit Name (eg, section) []:maintenance
Common Name (eg, your name or your server's hostname) []:#www.george.com
Email Address []:root@mail.george.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:Azt
## openssl req -x509 -days 365 -key test.key -in test.csr -out test.crt --公鑰
# ls --然後將下列test.crt && test.key 設定到/etc /httpd/conf.d/ssl.conf 即可
test.crt test.csr test.key
6.2、測試自己設定的憑證
#但是我們自己建立的憑證在瀏覽器中識別是不受信任的;憑證狀態也是「由於CA 根憑證不在「受信任的根憑證授權單位」儲存區中,所以它不受信任。 ”
      

#    需要我們自己在瀏覽器中手動將我們自己創建的證書(test.crt)導入到“受信任的根證書頒發機構”&&“受信任的發布者」。以Google瀏覽器為列,步驟如下:

      

    接著,會再彈出幾個對話框,我們點選「下一步」-「完成」-「是」。就 OK了。

  
此時在使用瀏覽器開啟我們的網站,查看憑證的狀態「該憑證沒有問題」。
#

以上是HTTP服務建構實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Linux的5支支柱:了解他們的角色Linux的5支支柱:了解他們的角色Apr 11, 2025 am 12:07 AM

Linux系統的五大支柱是:1.內核,2.系統庫,3.Shell,4.文件系統,5.系統工具。內核管理硬件資源並提供基本服務;系統庫為應用程序提供預編譯函數;Shell是用戶與系統交互的接口;文件系統組織和存儲數據;系統工具用於系統管理和維護。

Linux維護模式:工具和技術Linux維護模式:工具和技術Apr 10, 2025 am 09:42 AM

在Linux系統中,可以通過在啟動時按特定鍵或使用命令如“sudosystemctlrescue”進入維護模式。維護模式允許管理員在不受干擾的情況下進行系統維護和故障排除,如修復文件系統、重置密碼、修補安全漏洞等。

關鍵Linux操作:初學者指南關鍵Linux操作:初學者指南Apr 09, 2025 pm 04:09 PM

Linux初學者應掌握文件管理、用戶管理和網絡配置等基本操作。 1)文件管理:使用mkdir、touch、ls、rm、mv、cp命令。 2)用戶管理:使用useradd、passwd、userdel、usermod命令。 3)網絡配置:使用ifconfig、echo、ufw命令。這些操作是Linux系統管理的基礎,熟練掌握它們可以有效管理系統。

如何使用sudo向Linux的用戶授予高架特權?如何使用sudo向Linux的用戶授予高架特權?Mar 17, 2025 pm 05:32 PM

本文解釋瞭如何管理Linux中的Sudo特權,包括授予,撤銷和安全性最佳實踐。關鍵重點是安全和sudoers安全和限制訪問。Character數量:159

如何在Linux中實現SSH的兩因素身份驗證(2FA)?如何在Linux中實現SSH的兩因素身份驗證(2FA)?Mar 17, 2025 pm 05:31 PM

本文提供了有關使用Google Authenticator在Linux上設置兩因素身份驗證(2FA)的指南,詳細介紹了安裝,配置和故障排除步驟。它突出了2FA的安全益處,例如增強的SEC

如何使用TOP,HTOP和VMSTAT等工具來監視Linux中的系統性能?如何使用TOP,HTOP和VMSTAT等工具來監視Linux中的系統性能?Mar 17, 2025 pm 05:28 PM

本文討論了使用TOP,HTOP和VMSTAT監視Linux系統性能,並詳細介紹其獨特功能和自定義選項,以進行有效的系統管理。

如何使用軟件包管理器(APT,YUM,DNF)管理Linux中的軟件包?如何使用軟件包管理器(APT,YUM,DNF)管理Linux中的軟件包?Mar 17, 2025 pm 05:26 PM

文章討論了使用APT,YUM和DNF在Linux中管理軟件包,涵蓋安裝,更新和刪除。它比較了它們對不同分佈的功能和適用性。

如何在Linux中使用正則表達式(REGEX)進行模式匹配?如何在Linux中使用正則表達式(REGEX)進行模式匹配?Mar 17, 2025 pm 05:25 PM

本文介紹瞭如何在Linux中使用正則表達式(REGEX)進行模式匹配,文件搜索和文本操作,詳細列式,命令和工具,例如GREP,SED和AWK。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具