導航:首頁 > 配伺服器 > url如何檢測伺服器後端的狀態

url如何檢測伺服器後端的狀態

發布時間:2022-08-26 08:46:00

① 阿里雲slb伺服器負載均衡對後端伺服器的健康檢查方式有哪些

支持4層和7層檢查,4層檢查簡單來說就是連接一下tcp埠看能否連接。7層檢查目前支持HTTP和HTTPS,用戶需要提供一個URL,健康檢查會定期去訪問這個URL,如果返回的HTTP CODE是200的話認為健康,否則認為出錯。

② 用C#如何做一個檢測網站的URL是否連接正常

首先寫一個類

using System;
using System.Web;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using System.Threading;

namespace Test
{
public class Internet
{
#region 利用API方式獲取網路鏈接狀態

private static int NETWORK_ALIVE_LAN = 0x00000001;
private static int NETWORK_ALIVE_WAN = 0x00000002;
private static int NETWORK_ALIVE_AOL = 0x00000004;
[DllImport("sensapi.dll")]
private extern static bool IsNetworkAlive(ref int flags);
[DllImport("sensapi.dll")]
private extern static bool IsDestinationReachable(string dest, IntPtr ptr);
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int connectionDescription, int reservedValue);
public Internet() { }
public static bool IsConnected()
{
int desc = 0;
bool state = InternetGetConnectedState(out desc, 0);
return state;
}
public static bool IsLanAlive()
{
return IsNetworkAlive(ref NETWORK_ALIVE_LAN);
}
public static bool IsWanAlive()
{
return IsNetworkAlive(ref NETWORK_ALIVE_WAN);
}
public static bool IsAOLAlive()
{
return IsNetworkAlive(ref NETWORK_ALIVE_AOL);
}
public static bool IsDestinationAlive(string Destination)
{
return (IsDestinationReachable(Destination, IntPtr.Zero));
}

#endregion

/// <summary>
/// 在指定時間內嘗試連接指定主機上的指定埠。 (默認埠:80,默認鏈接超時:5000毫秒)
/// </summary>
/// <param name="HostNameOrIp">主機名稱或者IP地址</param>
/// <param name="port">埠</param>
/// <param name="timeOut">超時時間</param>
/// <returns>返回布爾類型</returns>
public static bool IsHostAlive(string HostNameOrIp, int? port, int? timeOut)
{
TcpClient tc = new TcpClient();
tc.SendTimeout = timeOut ?? 5000;
tc.ReceiveTimeout = timeOut ?? 5000;
bool isAlive;
try
{
tc.Connect(HostNameOrIp, port ?? 80);
isAlive = true;
}
catch
{
isAlive = false;
}
finally
{
tc.Close();
}
return isAlive;
}
/// <summary>
/// 在指定時間內嘗試連接指定主機上的指定埠。 (默認埠:80,默認鏈接超時:5000毫秒)
/// </summary>
/// <param name= "hostname ">要連接到的遠程主機的 DNS 名。</param>
/// <param name= "port ">要連接到的遠程主機的埠號。 </param>
/// <param name= "millisecondsTimeout ">要等待的毫秒數,或 -1 表示無限期等待。</param>
/// <returns>已連接的一個 TcpClient 實例。</returns>
public static TcpClient Connect(string hostname, int? port, int? millisecondsTimeout)
{
try
{
ConnectorState cs = new ConnectorState();
cs.Hostname = hostname;
cs.Port = port ?? 80;
ThreadPool.QueueUserWorkItem(new WaitCallback(ConnectThreaded), cs);
if (cs.Completed.WaitOne(millisecondsTimeout ?? 5000, false))
{
if (cs.TcpClient != null)
return cs.TcpClient;
return null;
}
else
{
cs.Abort();
return null;
}
}
catch
{
return null;
}
}
private static void ConnectThreaded(object state)
{
ConnectorState cs = (ConnectorState)state;
cs.Thread = Thread.CurrentThread;
try
{
TcpClient tc = new TcpClient(cs.Hostname, cs.Port);
if (cs.Aborted)
{
try
{
tc.GetStream().Close();
}
catch { }
try
{
tc.Close();
}
catch { }
}
else
{
cs.TcpClient = tc;
cs.Completed.Set();
}
}
catch (Exception e)
{
cs.Exception = e;
cs.Completed.Set();
}
}
private class ConnectorState
{
public string Hostname;
public int Port;
public volatile Thread Thread;
public readonly ManualResetEvent Completed = new ManualResetEvent(false);
public volatile TcpClient TcpClient;
public volatile Exception Exception;
public volatile bool Aborted;
public void Abort()
{
if (Aborted != true)
{
Aborted = true;
try
{
Thread.Abort();
}
catch { }
}
}
}
}
}

使用方法

bool IsHostAlive;//表示是否正常
try
{
TcpClient tc = Internet.Connect("要檢測的鏈接地址", null, 2000); //這里的2000 表示去連接地址2秒 如果2秒內不能訪問到 表示認為不正常
//檢測網路聯通狀態
if (tc != null)
{
tc.GetStream().Close();
tc.Close();
IsHostAlive = true;
}
else
{
IsHostAlive = false;
}
}
catch
{
IsHostAlive = false;
}

命名空間
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Diagnostics;
using System.Reflection;
using System.Net.NetworkInformation;
using System.Web;
using System.Net.Sockets;

③ apache haproxy 怎麼樣

一、lvs的優勢: 1、抗負載能力強,因為lvs工作方式的邏輯是非常之簡單,而且工作在網路4層僅做請求分發之用,沒有流量,所以在效率上基本不需要太過考慮。在我手裡的 lvs,僅僅出過一次問題:在並發最高的一小段時間內均衡器出現丟包現象,據分析為網路問題,即網卡或linux2.4內核的承載能力已到上限,內存和 cpu方面基本無消耗。 2、配置性低,這通常是一大劣勢,但同時也是一大優勢,因為沒有太多可配置的選項,所以除了增減伺服器,並不需要經常去觸碰它,大大減少了人為出錯的幾率。 3、工作穩定,因為其本身抗負載能力很強,所以穩定性高也是順理成章,另外各種lvs都有完整的雙機熱備方案,所以一點不用擔心均衡器本身會出什麼問題,節點出現故障的話,lvs會自動判別,所以系統整體是非常穩定的。 4、無流量,上面已經有所提及了。lvs僅僅分發請求,而流量並不從它本身出去,所以可以利用它這點來做一些線路分流之用。沒有流量同時也保住了均衡器的IO性能不會受到大流量的影響。 5、基本上能支持所有應用,因為lvs工作在4層,所以它可以對幾乎所有應用做負載均衡,包括http、資料庫、聊天室等等。 另:lvs也不是完全能判別節點故障的,譬如在wlc分配方式下,集群里有一個節點沒有配置VIP,會使整個集群不能使用,這時使用wrr分配方式則會丟掉一台機。目前這個問題還在進一步測試中。所以,用lvs也得多多當心為妙。 二、nginx和lvs作對比的結果 1、nginx工作在網路的7層,所以它可以針對http應用本身來做分流策略,比如針對域名、目錄結構等,相比之下lvs並不具備這樣的功能,所以 nginx單憑這點可利用的場合就遠多於lvs了;但nginx有用的這些功能使其可調整度要高於lvs,所以經常要去觸碰觸碰,由lvs的第2條優點 看,觸碰多了,人為出問題的幾率也就會大。 2、nginx對網路的依賴較小,理論上只要ping得通,網頁訪問正常,nginx就能連得通,nginx同時還能區分內外網,如果是同時擁有內外網的 節點,就相當於單機擁有了備份線路;lvs就比較依賴於網路環境,目前來看伺服器在同一網段內並且lvs使用direct方式分流,效果較能得到保證。另 外注意,lvs需要向託管商至少申請多一個ip來做Visual IP,貌似是不能用本身的IP來做VIP的。要做好LVS管理員,確實得跟進學習很多有關網路通信方面的知識,就不再是一個HTTP那麼簡單了。 3、nginx安裝和配置比較簡單,測試起來也很方便,因為它基本能把錯誤用日誌列印出來。lvs的安裝和配置、測試就要花比較長的時間了,因為同上所述,lvs對網路依賴比較大,很多時候不能配置成功都是因為網路問題而不是配置問題,出了問題要解決也相應的會麻煩得多。 4、nginx也同樣能承受很高負載且穩定,但負載度和穩定度差lvs還有幾個等級:nginx處理所有流量所以受限於機器IO和配置;本身的bug也還是難以避免的;nginx沒有現成的雙機熱備方案,所以跑在單機上還是風險較大,單機上的事情全都很難說。 5、nginx可以檢測到伺服器內部的故障,比如根據伺服器處理網頁返回的狀態碼、超時等等,並且會把返回錯誤的請求重新提交到另一個節點。目前lvs中 ldirectd也能支持針對伺服器內部的情況來監控,但lvs的原理使其不能重發請求。重發請求這點,譬如用戶正在上傳一個文件,而處理該上傳的節點剛 好在上傳過程中出現故障,nginx會把上傳切到另一台伺服器重新處理,而lvs就直接斷掉了,如果是上傳一個很大的文件或者很重要的文件的話,用戶可能 會因此而惱火。 6、nginx對請求的非同步處理可以幫助節點伺服器減輕負載,假如使用apache直接對外服務,那麼出現很多的窄帶鏈接時apache伺服器將會佔用大 量內存而不能釋放,使用多一個nginx做apache代理的話,這些窄帶鏈接會被nginx擋住,apache上就不會堆積過多的請求,這樣就減少了相 當多的內存佔用。這點使用squid也有相同的作用,即使squid本身配置為不緩存,對apache還是有很大幫助的。lvs沒有這些功能,也就無法能 比較。 7、nginx能支持http和email(email的功能估計比較少人用),lvs所支持的應用在這點上會比nginx更多。 在使用上,一般最前端所採取的策略應是lvs,也就是DNS的指向應為lvs均衡器,lvs的優點令它非常適合做這個任務。 重要的ip地址,最好交由lvs託管,比如資料庫的ip、webservice伺服器的ip等等,這些ip地址隨著時間推移,使用面會越來越大,如果更換ip則故障會接踵而至。所以將這些重要ip交給lvs託管是最為穩妥的,這樣做的唯一缺點是需要的VIP數量會比較多。 nginx可作為lvs節點機器使用,一是可以利用nginx的功能,二是可以利用nginx的性能。當然這一層面也可以直接使用squid,squid的功能方面就比nginx弱不少了,性能上也有所遜色於nginx。 nginx也可作為中層代理使用,這一層面nginx基本上無對手,唯一可以撼動nginx的就只有lighttpd了,不過lighttpd目前還沒有 能做到nginx完全的功能,配置也不那麼清晰易讀。另外,中層代理的IP也是重要的,所以中層代理也擁有一個VIP和lvs是最完美的方案了。 nginx也可作為網頁靜態伺服器,不過超出了本文討論的范疇,簡單提一下。 具體的應用還得具體分析,如果是比較小的網站(日PV<1000萬),用nginx就完全可以了,如果機器也不少,可以用DNS輪詢,lvs所耗費的機器還是比較多的;大型網站或者重要的服務,機器不發愁的時候,要多多考慮利用lvs。 **************************************************************************************************************** Nginx的優點: 性能好,可以負載超過1萬的並發。 功能多,除了負載均衡,還能作Web伺服器,而且可以通過Geo模塊來實現流量分配。 社區活躍,第三方補丁和模塊很多 支持gzip proxy 缺點: 不支持session保持。 對後端realserver的健康檢查功能效果不好。而且只支持通過埠來檢測,不支持通過url來檢測。 nginx對big request header的支持不是很好,如果client_header_buffer_size設置的比較小,就會返回400bad request頁面。 Haproxy的優點: 它的優點正好可以補充nginx的缺點。支持session保持,同時支持通過獲取指定的url來檢測後端伺服器的狀態。 支持tcp模式的負載均衡。比如可以給mysql的從伺服器集群和郵件伺服器做負載均衡。 缺點: 不支持虛擬主機(這個很傻啊) 目前沒有nagios和cacti的性能監控模板 LVS的優點: 性能好,接近硬體設備的網路吞吐和連接負載能力。 LVS的DR模式,支持通過廣域網進行負載均衡。這個其他任何負載均衡軟體目前都不具備。 缺點: 比較重型。另外社區不如nginx活躍。 ************************************************************************************* 現在網路中常見的的負載均衡主要分為兩種:一種是通過硬體來進行進行,常見的硬體有比較昂貴的NetScaler、F5、Radware和Array等商用的負載均衡器,也有類似於LVS、Nginx、HAproxy的基於Linux的開源的負載均衡策略, 商用負載均衡裡面NetScaler從效果上比F5的效率上更高。對於負載均衡器來說,不過商用負載均衡由於可以建立在四~七層協議之上,因此適用 面更廣所以有其不可替代性,他的優點就是有專業的維護團隊來對這些服務進行維護、缺點就是花銷太大,所以對於規模較小的網路服務來說暫時還沒有需要使用。 另一種負載均衡的方式是通過軟體:比較常見的有LVS、Nginx、HAproxy等,其中LVS是建立在四層協議上面的,而另外Nginx和HAproxy是建立在七層協議之上的,下面分別介紹關於 LVS:使用集群技術和Linux操作系統實現一個高性能、高可用的伺服器,它具有很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。 LVS的特點是: 1、抗負載能力強、是工作在網路4層之上僅作分發之用,沒有流量的產生; 2、配置性比較低,這是一個缺點也是一個優點,因為沒有可太多配置的東西,所以並不需要太多接觸,大大減少了人為出錯的幾率; 3、工作穩定,自身有完整的雙機熱備方案; 4、無流量,保證了均衡器IO的性能不會收到大流量的影響; 5、應用范圍比較廣,可以對所有應用做負載均衡; 6、LVS需要向IDC多申請一個IP來做Visual IP,因此需要一定的網路知識,所以對操作人的要求比較高。 Nginx的特點是: 1、工作在網路的7層之上,可以針對http應用做一些分流的策略,比如針對域名、目錄結構; 2、Nginx對網路的依賴比較小; 3、Nginx安裝和配置比較簡單,測試起來比較方便; 4、也可以承擔高的負載壓力且穩定,一般能支撐超過1萬次的並發; 5、Nginx可以通過埠檢測到伺服器內部的故障,比如根據伺服器處理網頁返回的狀態碼、超時等等,並且會把返回錯誤的請求重新提交到另一個節點,不過其中缺點就是不支持url來檢測; 6、Nginx對請求的非同步處理可以幫助節點伺服器減輕負載; 7、Nginx能支持http和Email,這樣就在適用范圍上面小很多; 8、不支持Session的保持、對Big request header的支持不是很好,另外默認的只有Round-robin和IP-hash兩種負載均衡演算法。 HAProxy的特點是: 1、HAProxy是工作在網路7層之上。 2、能夠補充Nginx的一些缺點比如Session的保持,Cookie的引導等工作 3、支持url檢測後端的伺服器出問題的檢測會有很好的幫助。 4、更多的負載均衡策略比如:動態加權輪循(Dynamic Round Robin),加權源地址哈希(Weighted Source Hash),加權URL哈希和加權參數哈希(Weighted Parameter Hash)已經實現 5、單純從效率上來講HAProxy更會比Nginx有更出色的負載均衡速度。 6、HAProxy可以對Mysql進行負載均衡,對後端的DB節點進行檢測和負載均衡。 *********************************************************************************************** 現在網站發展的趨勢對網路負載均衡的使用是隨著網站規模的提升根據不同的階段來使用不同的技術: 第一階段:利用Nginx或者HAProxy進行單點的負載均衡,這一階段伺服器規模剛脫離開單伺服器、單資料庫的模式,需要一定的負載均衡,但是 仍然規模較小沒有專業的維護團隊來進行維護,也沒有需要進行大規模的網站部署。這樣利用Nginx或者HAproxy就是第一選擇,此時這些東西上手快, 配置容易,在七層之上利用HTTP協議就可以。這時是第一選擇 第二階段:隨著網路服務進一步擴大,這時單點的Nginx已經不能滿足,這時使用LVS或者商用F5就是首要選擇,Nginx此時就作為LVS或者 F5的節點來使用,具體LVS或者F5的是選擇是根據公司規模,人才以及資金能力來選擇的,這里也不做詳談,但是一般來說這階段相關人才跟不上業務的提 升,所以購買商業負載均衡已經成為了必經之路。 第三階段:這時網路服務已經成為主流產品,此時隨著公司知名度也進一步擴展,相關人才的能力以及數量也隨之提升,這時無論從開發適合自身產品的定製,以及降低成本來講開源的LVS,已經成為首選,這時LVS會成為主流。 最終形成比較理想的狀態為:F5/LVS<—>Haproxy<—>Squid/Varnish<—>AppServer。

④ 負載均衡

轉帖:幾種負載均衡軟體的比較
Nginx的優點:

性能好,可以負載超過1萬的並發。

功能多,除了負載均衡,還能作Web伺服器,而且可以通過Geo模塊來實現流量分配。

社區活躍,第三方補丁和模塊很多

支持gzip proxy

缺點:

不支持session保持。

對後端realserver的健康檢查功能效果不好。而且只支持通過埠來檢測,不支持通過url來檢測。

nginx對big request header的支持不是很好,如果client_header_buffer_size 設置的比較小,就會返回400 bad request頁面。

Haproxy的優點:

它的優點正好可以補充nginx的缺點。支持session保持,同時支持通過獲取指定的url來檢測後端伺服器的狀態。

支持tcp模式的負載均衡。比如可以給mysql的從伺服器集群和郵件伺服器做負載均衡。

缺點:

不支持虛擬主機(這個很傻啊)

目前沒有nagios和cacti的性能監控模板

LVS的優點:

性能好,接近硬體設備的網路吞吐和連接負載能力。

LVS的DR模式,支持通過廣域網進行負載均衡。這個其他任何負載均衡軟體目前都不具備。

缺點:

比較重型。另外社區不如nginx活躍。

⑤ nginx不支持url檢測是什麼意思

主要是針對後端的RealServer伺服器的健康檢查來講,nginx只能通過埠的方式來檢測後端伺服器的狀態,而不能通過URL地址來檢測後端伺服器的狀態。

⑥ 如何檢查域名URL轉發是否正常

排查解決方法:

1、ping 域名 看是否解析至URL轉發伺服器的IP:121.199.253.*

2、如果未解析至以上IP,說明URL轉發未生效,檢查控制中心記錄.

3、如果已解析至以上IP說明URL轉發生效,在IE瀏覽器中輸入域名測試.

⑦ LVS 和 Nginx 和 HAproxy 的區別

Nginx的優點是:
1、工作在網路的7層之上,可以針對http應用做一些分流的策略,比如針對域名、目錄結構,它的正則規則比HAProxy更為強大和靈活,這也是它目前廣泛流行的主要原因之一,Nginx單憑這點可利用的場合就遠多於LVS了。
2、Nginx對網路穩定性的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優勢之一;相反LVS對網路穩定性依賴比較大,這點本人深有體會;
3、Nginx安裝和配置比較簡單,測試起來比較方便,它基本能把錯誤用日誌列印出來。LVS的配置、測試就要花比較長的時間了,LVS對網路依賴比較大。
3、可以承擔高負載壓力且穩定,在硬體不差的情況下一般能支撐幾萬次的並發量,負載度比LVS相對小些。
4、Nginx可以通過埠檢測到伺服器內部的故障,比如根據伺服器處理網頁返回的狀態碼、超時等等,並且會把返回錯誤的請求重新提交到另一個節點,不過其中缺點就是不支持url來檢測。比如用戶正在上傳一個文件,而處理該上傳的節點剛好在上傳過程中出現故障,Nginx會把上傳切到另一台伺服器重新處理,而LVS就直接斷掉了,如果是上傳一個很大的文件或者很重要的文件的話,用戶可能會因此而不滿。
5、Nginx不僅僅是一款優秀的負載均衡器/反向代理軟體,它同時也是功能強大的Web應用伺服器。LNMP也是近幾年非常流行的web架構,在高流量的環境中穩定性也很好。
6、Nginx現在作為Web反向加速緩存越來越成熟了,速度比傳統的Squid伺服器更快,可以考慮用其作為反向代理加速器。
7、Nginx可作為中層反向代理使用,這一層面Nginx基本上無對手,唯一可以對比Nginx的就只有lighttpd了,不過lighttpd目前還沒有做到Nginx完全的功能,配置也不那麼清晰易讀,社區資料也遠遠沒Nginx活躍。
8、Nginx也可作為靜態網頁和圖片伺服器,這方面的性能也無對手。還有Nginx社區非常活躍,第三方模塊也很多。
Nginx的缺點是:
1、Nginx僅能支持http、https和Email協議,這樣就在適用范圍上面小些,這個是它的缺點。
2、對後端伺服器的健康檢查,只支持通過埠來檢測,不支持通過url來檢測。不支持Session的直接保持,但能通過ip_hash來解決。
LVS
LVS:使用Linux內核集群實現一個高性能、高可用的負載均衡伺服器,它具有很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。
LVS的優點是:
1、抗負載能力強、是工作在網路4層之上僅作分發之用,沒有流量的產生,這個特點也決定了它在負載均衡軟體里的性能最強的,對內存和cpu資源消耗比較低。
2、配置性比較低,這是一個缺點也是一個優點,因為沒有可太多配置的東西,所以並不需要太多接觸,大大減少了人為出錯的幾率。
3、工作穩定,因為其本身抗負載能力很強,自身有完整的雙機熱備方案,如LVS+Keepalived,不過我們在項目實施中用得最多的還是LVS/DR+Keepalived。
4、無流量,LVS只分發請求,而流量並不從它本身出去,這點保證了均衡器IO的性能不會收到大流量的影響。
5、應用范圍比較廣,因為LVS工作在4層,所以它幾乎可以對所有應用做負載均衡,包括http、資料庫、在線聊天室等等。
LVS的缺點是:
1、軟體本身不支持正則表達式處理,不能做動靜分離;而現在許多網站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優勢所在。
2、如果是網站應用比較龐大的話,LVS/DR+Keepalived實施起來就比較復雜了,特別後面有Windows
Server的機器的話,如果實施及配置還有維護過程就比較復雜了,相對而言,Nginx/HAProxy+Keepalived就簡單多了。
HAProxy
HAProxy的特點是:
1、HAProxy也是支持虛擬主機的。
2、HAProxy的優點能夠補充Nginx的一些缺點,比如支持Session的保持,Cookie的引導;同時支持通過獲取指定的url來檢測後端伺服器的狀態。
3、HAProxy跟LVS類似,本身就只是一款負載均衡軟體;單純從效率上來講HAProxy會比Nginx有更出色的負載均衡速度,在並發處理上也是優於Nginx的。
4、HAProxy支持TCP協議的負載均衡轉發,可以對MySQL讀進行負載均衡,對後端的MySQL節點進行檢測和負載均衡,大家可以用LVS+Keepalived對MySQL主從做負載均衡。
5、HAProxy負載均衡策略非常多,HAProxy的負載均衡演算法現在具體有如下8種:
①roundrobin,表示簡單的輪詢,這個不多說,這個是負載均衡基本都具備的;
② static-rr,表示根據權重,建議關注;
③leastconn,表示最少連接者先處理,建議關注;
④ source,表示根據請求源IP,這個跟Nginx的IP_hash機制類似,我們用其作為解決session問題的一種方法,建議關注;
⑤ri,表示根據請求的URI;
⑥rl_param,表示根據請求的URl參數』balance url_param』 requires an URL parameter name;
⑦hdr(name),表示根據HTTP請求頭來鎖定每一次HTTP請求;
⑧rdp-cookie(name),表示根據據cookie(name)來鎖定並哈希每一次TCP請求。
本人博客自己寫的 blog.jxhs.me

⑧ 如何通過HTTP狀態判斷伺服器運營狀態

HTTP狀態碼(HTTP Status Code)是用以表示網頁伺服器HTTP響應狀態的3位數字代碼。它由 RFC 2616 規范定義的,並得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等規范擴展。

所有狀態碼的第一個數字代表了響應的五種狀態之一。

1xx 消息

這一類型的狀態碼,代表請求已被接受,需要繼續處理。這類響應是臨時響應,只包含狀態行和某些可選的響應頭信息,並以空行結束。由於 HTTP/1.0 協議中沒有定義任何 1xx 狀態碼,所以除非在某些試驗條件下,伺服器禁止向此類客戶端發送 1xx 響應。

100 Continue

客戶端應當繼續發送請求。這個臨時響應是用來通知客戶端它的部分請求已經被伺服器接收,且仍未被拒絕。客戶端應當繼續發送請求的剩餘部分,或者如果請求已經完成,忽略這個響應。伺服器必須在請求完成後向客戶端發送一個最終響應。

101 Switching Protocols

伺服器已經理解了客戶端的請求,並將通過 Upgrade 消息頭通知客戶端採用不同的協議來完成這個請求。在發送完這個響應最後的空行後,伺服器將會切換到在 Upgrade 消息頭中定義的那些協議。

只有在切換新的協議更有好處的時候才應該採取類似措施。例如,切換到新的 HTTP 版本比舊版本更有優勢,或者切換到一個實時且同步的協議以傳送利用此類特性的資源。

102 Processing

由WebDAV(RFC 2518)擴展的狀態碼,代表處理將被繼續執行。

2xx 成功

這一類型的狀態碼,代表請求已成功被伺服器接收、理解、並接受。

200 OK

請求已成功,請求所希望的響應頭或數據體將隨此響應返回。

201 Created

請求已經被實現,而且有一個新的資源已經依據請求的需要而建立,且其 URI 已經隨 Location 頭信息返回。假如需要的資源無法及時建立的話,應當返回 '202 Accepted'。

202 Accepted

伺服器已接受請求,但尚未處理。正如它可能被拒絕一樣,最終該請求可能會也可能不會被執行。在非同步操作的場合下,沒有比發送這個狀態碼更方便的做法了。

返回202狀態碼的響應的目的是允許伺服器接受其他過程的請求(例如某個每天只執行一次的基於批處理的操作),而不必讓客戶端一直保持與伺服器的連接直到批處理操作全部完成。在接受請求處理並返回202狀態碼的響應應當在返回的實體中包含一些指示處理當前狀態的信息,以及指向處理狀態監視器或狀態預測的指針,以便用戶能夠估計操作是否已經完成。

203 Non-Authoritative Information

伺服器已成功處理了請求,但返回的實體頭部元信息不是在原始伺服器上有效的確定集合,而是來自本地或者第三方的拷貝。當前的信息可能是原始版本的子集或者超集。例如,包含資源的元數據可能導致原始伺服器知道元信息的超級。使用此狀態碼不是必須的,而且只有在響應不使用此狀態碼便會返回200 OK的情況下才是合適的。

204 No Content

伺服器成功處理了請求,但不需要返回任何實體內容,並且希望返回更新了的元信息。響應可能通過實體頭部的形式,返回新的或更新後的元信息。如果存在這些頭部信息,則應當與所請求的變數相呼應。

如果客戶端是瀏覽器的話,那麼用戶瀏覽器應保留發送了該請求的頁面,而不產生任何文檔視圖上的變化,即使按照規范新的或更新後的元信息應當被應用到用戶瀏覽器活動視圖中的文檔。

由於204響應被禁止包含任何消息體,因此它始終以消息頭後的第一個空行結尾。

205 Reset Content

伺服器成功處理了請求,且沒有返回任何內容。但是與204響應不同,返回此狀態碼的響應要求請求者重置文檔視圖。該響應主要是被用於接受用戶輸入後,立即重置表單,以便用戶能夠輕松地開始另一次輸入。

與204響應一樣,該響應也被禁止包含任何消息體,且以消息頭後的第一個空行結束。

206 Partial Content

伺服器已經成功處理了部分 GET 請求。類似於 FlashGet 或者迅雷這類的 HTTP 下載工具都是使用此類響應實現斷點續傳或者將一個大文檔分解為多個下載段同時下載。

該請求必須包含 Range 頭信息來指示客戶端希望得到的內容範圍,並且可能包含 If-Range 來作為請求條件。

響應必須包含如下的頭部域:

Content-Range 用以指示本次響應中返回的內容的范圍;如果是 Content-Type 為 multipart/byteranges 的多段下載,則每一 multipart 段中都應包含 Content-Range 域用以指示本段的內容範圍。假如響應中包含 Content-Length,那麼它的數值必須匹配它返回的內容範圍的真實位元組數。

Date

ETag 和/或 Content-Location,假如同樣的請求本應該返回200響應。

Expires, Cache-Control,和/或 Vary,假如其值可能與之前相同變數的其他響應對應的值不同的話。

假如本響應請求使用了 If-Range 強緩存驗證,那麼本次響應不應該包含其他實體頭;假如本響應的請求使用了 If-Range 弱緩存驗證,那麼本次響應禁止包含其他實體頭;這避免了緩存的實體內容和更新了的實體頭信息之間的不一致。否則,本響應就應當包含所有本應該返回200響 應中應當返回的所有實體頭部域。

假如 ETag 或 Last-Modified 頭部不能精確匹配的話,則客戶端緩存應禁止將206響應返回的內容與之前任何緩存過的內容組合在一起。

任何不支持 Range 以及 Content-Range 頭的緩存都禁止緩存206響應返回的內容。

207 Multi-Status

由WebDAV(RFC 2518)擴展的狀態碼,代表之後的消息體將是一個XML消息,並且可能依照之前子請求數量的不同,包含一系列獨立的響應代碼。

3xx 重定向

這類狀態碼代表需要客戶端採取進一步的操作才能完成請求。通常,這些狀態碼用來重定向,後續的請求地址(重定向目標)在本次響應的 Location 域中指明。

當且僅當後續的請求所使用的方法是 GET 或者 HEAD 時,用戶瀏覽器才可以在沒有用戶介入的情況下自動提交所需要的後續請求。客戶端應當自動監測無限循環重定向(例如:A->A,或者A->B->C->A),因為這會導致伺服器和客戶端大量不必要的資源消耗。按照 HTTP/1.0 版規范的建議,瀏覽器不應自動訪問超過5次的重定向。

300 Multiple Choices

被請求的資源有一系列可供選擇的回饋信息,每個都有自己特定的地址和瀏覽器驅動的商議信息。用戶或瀏覽器能夠自行選擇一個首選的地址進行重定向。

除非這是一個 HEAD 請求,否則該響應應當包括一個資源特性及地址的列表的實體,以便用戶或瀏覽器從中選擇最合適的重定向地址。這個實體的格式由 Content-Type 定義的格式所決定。瀏覽器可能根據響應的格式以及瀏覽器自身能力,自動作出最合適的選擇。當然,RFC 2616規范並沒有規定這樣的自動選擇該如何進行。

如果伺服器本身已經有了首選的回饋選擇,那麼在 Location 中應當指明這個回饋的 URI;瀏覽器可能會將這個 Location 值作為自動重定向的地址。此外,除非額外指定,否則這個響應也是可緩存的。

301 Moved Permanently

被請求的資源已永久移動到新位置,並且將來任何對此資源的引用都應該使用本響應返回的若干個 URI 之一。如果可能,擁有鏈接編輯功能的客戶端應當自動把請求的地址修改為從伺服器反饋回來的地址。除非額外指定,否則這個響應也是可緩存的。

新的永久性的 URI 應當在響應的 Location 域中返回。除非這是一個 HEAD 請求,否則響應的實體中應當包含指向新的 URI 的超鏈接及簡短說明。

如果這不是一個 GET 或者 HEAD 請求,因此瀏覽器禁止自動進行重定向,除非得到用戶的確認,因為請求的條件可能因此發生變化。

注意:對於某些使用 HTTP/1.0 協議的瀏覽器,當它們發送的 POST 請求得到了一個301響應的話,接下來的重定向請求將會變成 GET 方式。

302 Found

請求的資源現在臨時從不同的 URI 響應請求。由於這樣的重定向是臨時的,客戶端應當繼續向原有地址發送以後的請求。只有在Cache-Control或Expires中進行了指定的情況下,這個響應才是可緩存的。

新的臨時性的 URI 應當在響應的 Location 域中返回。除非這是一個 HEAD 請求,否則響應的實體中應當包含指向新的 URI 的超鏈接及簡短說明。

如果這不是一個 GET 或者 HEAD 請求,那麼瀏覽器禁止自動進行重定向,除非得到用戶的確認,因為請求的條件可能因此發生變化。

注意:雖然RFC 1945和RFC 2068規范不允許客戶端在重定向時改變請求的方法,但是很多現存的瀏覽器將302響應視作為303響應,並且使用 GET 方式訪問在 Location 中規定的 URI,而無視原先請求的方法。狀態碼303和307被添加了進來,用以明確伺服器期待客戶端進行何種反應。

303 See Other

對應當前請求的響應可以在另一個 URI 上被找到,而且客戶端應當採用 GET 的方式訪問那個資源。這個方法的存在主要是為了允許由腳本激活的POST請求輸出重定向到一個新的資源。這個新的 URI 不是原始資源的替代引用。同時,303響應禁止被緩存。當然,第二個請求(重定向)可能被緩存。

新的 URI 應當在響應的 Location 域中返回。除非這是一個 HEAD 請求,否則響應的實體中應當包含指向新的 URI 的超鏈接及簡短說明。

注意:許多 HTTP/1.1 版以前的 瀏覽器不能正確理解303狀態。如果需要考慮與這些瀏覽器之間的互動,302狀態碼應該可以勝任,因為大多數的瀏覽器處理302響應時的方式恰恰就是上述規范要求客戶端處理303響應時應當做的。

304 Not Modified

如果客戶端發送了一個帶條件的 GET 請求且該請求已被允許,而文檔的內容(自上次訪問以來或者根據請求的條件)並沒有改變,則伺服器應當返回這個狀態碼。304響應禁止包含消息體,因此始終以消息頭後的第一個空行結尾。

該響應必須包含以下的頭信息:

Date,除非這個伺服器沒有時鍾。假如沒有時鍾的伺服器也遵守這些規則,那麼代理伺服器以及客戶端可以自行將 Date 欄位添加到接收到的響應頭中去(正如RFC 2068中規定的一樣),緩存機制將會正常工作。

ETag 和/或 Content-Location,假如同樣的請求本應返回200響應。

Expires, Cache-Control,和/或 Vary,假如其值可能與之前相同變數的其他響應對應的值不同的話。

假如本響應請求使用了強緩存驗證,那麼本次響應不應該包含其他實體頭;否則(例如,某個帶條件的 GET 請求使用了弱緩存驗證),本次響應禁止包含其他實體頭;這避免了緩存了的實體內容和更新了的實體頭信息之間的不一致。

假如某個304響應指明了當前某個實體沒有緩存,那麼緩存系統必須忽視這個響應,並且重復發送不包含限制條件的請求。

假如接收到一個要求更新某個緩存條目的304響應,那麼緩存系統必須更新整個條目以反映所有在響應中被更新的欄位的值。

305 Use Proxy

被請求的資源必須通過指定的代理才能被訪問。 Location 域中將給出指定的代理所在的 URI 信息,接收者需要重復發送一個單獨的請求,通過這個代理才能訪問相應資源。只有原始伺服器才能建立305響應。

注意:RFC 2068中沒有明確305響應是為了重定向一個單獨的請求,而且只能被原始伺服器建立。忽視這些限制可能導致嚴重的安全後果。

306 Switch Proxy

在最新版的規范中,306狀態碼已經不再被使用。

307 Temporary Redirect

請求的資源現在臨時從不同的 URI 響應請求。由於這樣的重定向是臨時的,客戶端應當繼續向原有地址發送以後的請求。只有在Cache-Control或Expires中進行了指定的情況下,這個響應才是可緩存的。

新的臨時性的 URI 應當在響應的 Location 域中返回。除非這是一個 HEAD 請求,否則響應的實體中應當包含指向新的 URI 的超鏈接及簡短說明。因為部分瀏覽器不能識別307響應,因此需要添加上述必要信息以便用戶能夠理解並向新的 URI 發出訪問請求。

如果這不是一個 GET 或者 HEAD 請求,那麼瀏覽器禁止自動進行重定向,除非得到用戶的確認,因為請求的條件可能因此發生變化。

⑨ 什麼是URL,怎麼使用

URL是Uniform Resource Locator的縮寫,即統一資源定位器,它是一個識別Internet中哪裡有信息資源,並且將Internet提供的服務統一編址的系統。通過URL可以到達任何一個地方尋找需要的東西,比如文件、資料庫、圖像、新聞組等等,可以這樣說,URL是Internet上的地址簿。URL一般由三個部分構成,各個部分如下: 1. 伺服器標識符 通過選擇伺服器標識符能夠確定將要訪問的伺服器的類型,URL中的伺服器標識符可以有http://、FTP://、GOPHER://、TELNET://、NWES://等等類型,分別指定為採用超文本傳輸協議連接、採用文件傳輸協議連接、與GOPHER伺服器連接、與TELNET會話連接、與USENET新聞組相連接。 2. 信息資源地址 信息資源地址是由兩部分構成的,一是機器名稱,如www.tsinghua.e.cn是用來指示資源所存在的機器,另一個是通信埠號(port number),是連接時所使用的通信埠號。埠是Internet用來辨別特定信息服務用的一種軟體標識,其設置范圍是0到65535之間的整數,一般情況下使用的是標准埠號,可以不用寫出。在需要特殊服務時會用到非標准埠號,這時就要寫出,如http://www.tsinghua.e.cn:81。常見的Internet提供服務的埠號,如HTTP的標准埠號為80,TELNET的標准埠號為23,FTP的標准埠號為21等等。 3. 路徑名 路徑名是給出資源在所在機器上的完整文件名,一般情況下只有用戶知道所要找的資源在什麼地方時才會給出這個選項。如http://www.tsinghua.e.cn/index.html等。

⑩ asp 檢測url地址是否可用除了用200,404等這些判斷還有沒有別的方法,急

如果域名伺服器不存在,會報錯。先做到捕捉錯誤。或者要錯誤時直接提示伺服器未開放,其後才能進行狀態判斷。返回信息200就可以了

閱讀全文

與url如何檢測伺服器後端的狀態相關的資料

熱點內容
日醫pdf 瀏覽:861
指定文件夾換壁紙 瀏覽:898
天玥伺服器是什麼架構 瀏覽:236
蘋果為什麼回購安卓手機 瀏覽:87
27歲程序員發型 瀏覽:196
圖庫文件夾是什麼意思 瀏覽:532
空調壓縮機隔音 瀏覽:351
簿荷閱讀app為什麼登陸不了 瀏覽:516
zigbee與單片機通信 瀏覽:439
下載伺服器錯誤怎麼辦 瀏覽:652
pdf讀取庫 瀏覽:483
如何找到底層演算法 瀏覽:329
小宅z3下載什麼app 瀏覽:816
快速列印pdf 瀏覽:636
安卓手機怎麼設置禁止卸載 瀏覽:87
鋼琴小車編程圖解 瀏覽:884
編譯選項DFORTIFY 瀏覽:326
快易典安卓怎麼升級系統 瀏覽:494
伺服器d盤上的pdf地址怎麼寫 瀏覽:121
windows游戲編程之從零開始下載 瀏覽:234