Apache 是一個優秀的開放源碼的網頁服務器,第一款web服務器端軟件。但對於那些須要更強大的Web應用服務器(好比大小、可定製、響應速度、可擴展性等方面)的人而言,Apache明顯不符合他們的要求,同類替代軟件有Lighttpd,Nginx,kangle,Boa,Jigsaw等。php
Squid是一個緩存Internet 數據的軟件,其接收用戶的下載申請,並自動處理所下載的數據。當一個用戶想要下載一個主頁時,能夠向Squid 發出一個申請,要Squid 代替其進行下載,而後Squid 鏈接所申請網站並請求該主頁,接着把該主頁傳給用戶同時保留一個備份,當別的用戶申請一樣的頁面時,Squid 把保存的備份當即傳給用戶,使用戶以爲速度至關快。Squid 能夠代理HTTP、FTP、GOPHER、SSL和WAIS等協議而且Squid 能夠自動地進行處理,能夠根據本身的須要設置Squid,使之過濾掉不想要的東西。html
- 客戶端向代理服務器發送數據請求;
- 代理服務器檢查本身的數據緩存;
- 代理服務器在緩存中找到了用戶想要的數據,取出數據;
- 代理服務器將從緩存中取得的數據返回給客戶端。
- 客戶端向代理服務器發送數據請求;
- 代理服務器檢查本身的數據緩存;
- 代理服務器在緩存中沒有找到用戶想要的數據;
- 代理服務器向Internet 上的遠端服務器發送數據請求;
- 遠端服務器響應,返回相應的數據;
- 代理服務器取得遠端服務器的數據,返回給客戶端,並保留一份到本身的數據緩存中。
按照代理類型的不一樣,能夠將Squid 代理分爲正向代理和反向代理,正向代理中,根據實現方式的不一樣,又能夠分爲普通代理和透明代理。java
一、普通代理:須要客戶機在瀏覽器中指定代理服務器的地址、端口; 二、透明代理:適用於企業的網關主機(共享接入Internet)中,客戶機不須要指定代理服務器地址、端口等信息,代理服務器須要設置防火牆策略將客戶機的Web訪問數據轉交給代理服務程序處理; 三、反向代理:是指以代理服務器來接受internet上的鏈接請求,而後將請求轉發給內部網絡上的服務器,並將從服務器上獲得的結果返回給internet上請求鏈接的客戶端,此時代理服務器對外就表現爲一個服務器。
Nginx(發音同 engine x)是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。由俄羅斯的程序設計師Igor Sysoev所開發,供俄國大型的入口網站及搜尋引擎Rambler(俄文:Рамблер)使用。
其特色是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好.中國大陸使用nginx網站用戶有:新浪、網易、騰訊、小米官網等。nginx
apache服務器是用來發布web網站的服務器,而squid代理服務器是用於代理局域網內的計算機鏈接互聯網 ,即squid正向代理;apache是被squid代理的。在squid代理下的apache其餘人是看不到其真正的IP地址,增長安全性。squid還能用於分擔網絡壓力的用途,好比多個apache服務器同時分擔工做的時候就由squid分配工做,即squid的反向代理。web
兩者均可以作反向代理;可是,nginx是異步模式,squid是同步模式。數據庫
反向代理從傳輸上能夠區分爲同步模式和異步模式,apache的mod_proxy和squid都屬於同步模式,nginx和lighttpd屬於異步模式apache
一、同步模式是用戶發起請求,請求當即被轉到後端的服務器,因而在瀏覽器和後端服務器之間就創建了一個鏈接,在請求完成前這個鏈接是一直存在的。後端
二、而異步模式時,用戶發起的請求會發送到nginx,nginx接收到全部的數據後在轉發到後端的服務器,後端服務器處理完成後把數據返回給nginx,nginx在返回給用戶。瀏覽器
因而可知若是用戶發起的請求的數據比較大,或者用戶端的網速比較慢,同步模式時後端服務器的鏈接數相對於異步模式會比較多,壓力也比較大。緩存
(3) apache 與 tomcat :
Apache 和 Tomcat 都是web網絡服務器,二者既有聯繫又有區別,在進行HTML、PHP、JSP、Perl等開發過程當中,須要準確掌握其各自特色,選擇最佳的服務器配置。
一、Apache是web服務器(靜態解析,如HTML),tomcat是java應用服務器(動態解析,如JSP、PHP)
二、Tomcat只是一個servlet(jsp也翻譯成servlet)容器,能夠認爲是apache的擴展,可是能夠獨立於apache運行。
相同點:
一、二者都是apache組織開發的
二、二者都有HTTP服務的功能
三、二者都是開源免費的
1)Apache是普通服務器,自己只支持html即普通網頁,能夠經過插件支持php,還能夠與Tomcat連通(Apache單向鏈接Tomcat,就是說經過Apache能夠訪問Tomcat資源,反之否則)。
2)Apache只支持靜態網頁,但像asp、jsp、php、cgi等動態網頁就須要Tomcat來處理。
3)Apache和Tomcat整合使用:
若是客戶端請求的是靜態頁面,則只須要Apache服務器響應請求;
若是客戶端請求動態頁面,則是Tomcat服務器響應請求,將解析的JSP等網頁代碼解析後回傳給Apache服務器,再經Apache返回給瀏覽器端。這是由於jsp是服務器端解釋代碼的,Tomcat只作動態代碼解析,Apache回傳解析好的靜態代碼,Apache+Tomcat這樣整合就能夠減小Tomcat的服務開銷。
4)Apache和Tomcat是獨立的,在同一臺服務器上能夠集成。
Apache是有C語言實現的,支持各類特性和模塊從而來擴展核心功能;Tomcat是Java編寫的,更好的支持Servlet和JSP。
一、Apache是Web服務器,Web服務器傳送(serves)頁面使瀏覽器能夠瀏覽,Web服務器專門處理HTTP請求(request),可是應用程序服務器是經過不少協議來爲應用程序提供 (serves)商業邏輯(business logic)。
Tomcat是運行在Apache上的應用服務器,應用程序服務器提供的是客戶端應用程序能夠調用(call)的方法 (methods)。它只是一個servlet(jsp也翻譯成servlet)容器,能夠認爲是Apache的擴展,可是能夠獨立於apache運行。
二、Apache是普通服務器,自己只支持html靜態普通網頁。不過能夠經過插件支持PHP,還能夠與Tomcat連通(單向Apache鏈接Tomcat,就是說經過Apache能夠訪問Tomcat資源,反之否則),Tomcat是jsp/servlet容器,同時也支持HTML、JSP、ASP、PHP、CGI等,其中CGI須要一些手動調試,不過很容易的。
三、Apache側重於http server,Tomcat側重於servlet引擎,若是以standalone方式運行,功能上Tomcat與apache等效支持JSP,但對靜態網頁不太理想。
四、Apache能夠運行一年不重啓,穩定性很是好,而Tomcat則不見得。
五、首選web服務器是Apache,但Apache解析不了的jsp、servlet才用tomcat。
六、Apache是很最開始的頁面解析服務,tomcat是後研發出來的,從本質上來講tomcat的功能徹底能夠替代Apache,但Apache畢竟是tomcat的前輩級人物,而且市場上也有很多人還在用Apache,因此Apache還會繼續存在,不會被取代,apache不能解析java的東西,但解析html速度快。
例如:
Apache是一輛車,上面能夠裝一些東西如html等,可是不能裝水,要裝水必需要有容器(桶),而這個桶也能夠不放在卡車上,那這個桶就是 Tomcat。
Apache是一個web服務器環境程序,啓用他能夠做爲web服務器使用不過只支持靜態網頁,不支持動態網頁,如asp、jsp、php、cgi
若是要在Apache環境下運行jsp就須要一個解釋器來執行jsp網頁,而這個jsp解釋器就是Tomcat
那爲何還要JDK呢?由於jsp須要鏈接數據庫的話就要jdk來提供鏈接數據庫的驅程,因此要運行jsp的web服務器平臺就須要APACHE+TOMCAT+JDK 。
若是客戶端請求的是靜態頁面,則只須要Apache服務器響應請求;
若是客戶端請求動態頁面,則是Tomcat服務器響應請求;
由於jsp是服務器端解釋代碼的,這樣整合就能夠減小Tomcat的服務開銷。
————————————————
版權聲明:本文爲CSDN博主「Benny-文俊」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/weixin_45409371/article/details/103404012