導航:首頁 > IDC知識 > nginx伺服器

nginx伺服器

發布時間:2020-08-04 09:54:26

1、Nginx是什麼,有什麼優點?為什麼選擇Nginx做web伺服器軟體?

老實說,這類問題問了也白問,只有自己去官網找資料才能得到答案.

2、為什麼要使用nginx伺服器??

這里做了些基準測試表明nginx打敗了其它的輕量級的web伺服器和代理伺服器,同樣也贏了相對不是那麼輕量級的產品。

有人說這些基準測試是不準確的,因為在這樣那樣的環境下,做的比較不一致。我傾向同意基準測試只是告訴了我們其中一部分情況,你能做的是消除偏見(有人見過所有人都同意一個基準測試是公平的嗎?我是沒見過。)

不管怎樣,這篇文章不是做基準測試來讓人們爭論(如果你喜歡,可以在Google上找到那樣的文章),相反,下面的引述來自人們在現實世界中使用Nginx,在真實的負載下,服務於真正的應用和網站。

引述

我們投資的一些公司把web平台切換到Nginx後,可以顯著的解決擴展問題。Nginx明顯有效的實現了今天互聯網上最大網站數量的增長。

– Thomas Gieselmann, BV Capital.


對今天運行網站的所有人的建議是,想打破性能限制就研究下能否使用Nginx。CloudFlare去年在一個相對較小的基礎設施上已經擴展到可以處理每
月超過150億的瀏覽量,很大程度上是因為Nginx的擴展性。我的經驗表明切換到Nginx可以最大限度的利用現代的操作系統和現有的硬體資源。

– Matthew Prince, CloudFlare的聯合創始人和CEO

Apache和Nginx都有能力提供每秒鍾龐大的請求服務,但是隨著並發數量的增加,Apache的性能開始下降,然而Nginx的性能幾乎不會下降。

這里最好的一點是:因為Nginx是基於事件的,它不用為每個請求產生新的進程或線程,所以它的內存使用很低。在我的基準測試中,它的內存使用坐落在2.5M,Apache使用得更多。

– WebFaction


對Nginx v0.5.22 and Apache
v2.2.8我用ab(Apache的基準測試工具)跑了一個簡單的測試。在測試過程中,我用vmstat和top檢測系統。結果表明在提供靜態內容
時,Nginx做得比Apache好。兩個伺服器都在並發數100時表現最佳。Apache使用4個工作進程(線程模式),30%的CPU和17MB的內
存,每秒鍾處理6,500次請求。Nginx使用一個工作進程,15%的CPU,1MB內存,每秒鍾處理11,500次請求。

– Linux Journal

Apache好比是微軟Word,它有100萬個選項,但是你只需要其中6個。Nginx就處理那6項任務,但處理其中5項任務時速度比Apache快50倍。

– Chris Lea

我現在使用Nginx在單一伺服器上處理每天超過數千萬(也就是每秒鍾幾百次)的反向代理HTTP請求。在負載高峰期,它消耗大約15MB的內存和10%的CPU,在我的特定配置下(FreeBSD 6)。

在同樣的負載下,Apache表現大跌(在大約使用1000個進程後,上帝知道使用了多少內存),Pound表現大跌(如此多的線程,所有的線程棧會消耗400MB以上的內存),還有Lighttpd每小時泄露20MB以上內存(使用更多CPU,但不顯著)。

– Bob Ippolito in the TurboGears mailing list, 2006-08-24

我們現在使用Nginx 0.6.29的upstream hash模塊為我們需要的Varnish代理提供靜態雜湊。我們通常處理8-9千次請求/秒,大約1.2Gb/秒數據在幾台Nginx伺服器間傳輸,而且還有很大的成長空間。

– WordPress.com

直到今天,我們一直使用Pound來解決Justin.tv 的負載均衡。它一直使用20%的CPU,在高峰期會達到80%。在極高的負載下,它偶爾會崩潰。

我們只是切換到了Nginx,負載馬上就降到了大約3%的CPU使用。我們的頁面感覺更快了,盡管這可能是我的錯覺。不僅它的配置文件格式容易理解和配置,而且還提供了完整的web伺服器功能。我們再也沒有遇到尖峰期了,而且我懷疑現有的性能會徹底打敗Pound。

– Emmett Shear

我們使用Nginx作為主要的軟體用於一個免費的託管平台,我已經在Nginx中開發了一個特定的模塊用於banner潛入和統計計算,現在我們的中央伺服器可以處理大約150-200Mbit/s高度分散的http流量(所有的文件都很小)。

我認為這是非常好的結果。因為在同樣的伺服器上面Apache不管怎麼優化,甚至都不能處理60-80Mbit/s。

– Alexey Kovyrin


陣子,我們把我們的前端IMAP/POP代理從perdition切換到了nginx…,現在我們又使用nginx來做前端web代理伺服器…。最終的結
果是,現在的每台前端代理伺服器可以保持超過10,000並發(IMAP, POP, Web &
SMTP)連接(其中很多還是SSL),僅僅只使用了大約10%的CPU。

– FastMail.fm blog

最近,我們的靜態內容伺服器切換到了Nginx,無疑這是這么多年來我印象最深刻的一款web伺服器。我們運行在一台配有8G內存的機器上,但是nginx進程只使用了可笑的1.4Mb。

– Philip Jacob

我們已經用nginx取代了Squid(反向代理)+Apache的方案,平均負載和CPU使用一樣降低了一半。另外我們的基準測試表明新的配置每秒鍾可以處理的請求數是舊配置的2-3倍。

– HowtoForge

我們用一些CMS系統( Wordpress, Drupal, Joomla, TYPO3等)做了基準測試,結果是Nginx提供網頁的速度比Apache快了50%,同時nginx每秒鍾處理的請求數(RPS)是Apache的177%。

3、為什麼要使用nginx伺服器?

我們大多數的客戶在他們的伺服器上使用Apache作為Web伺服器,尤其是部署在一個基於PHP系統的前端並且使用mod-PHP。鑒於擴張性和性能方面的原因,我們通常會建議他們改用Nginx和FPM。

Apache是非常強大的Web伺服器,模塊化結構,也是Web服務端的鼻祖。除了捆綁一些其他的工具外,Apache已經成為了世上最廣泛部署的開源系統,直到最近,世界上大多數網站仍運行著Apache系統。

但是,Apache並不是完美的,並且不再適合大規模系統。為什麼?因為他的進程模式雖然簡單而靈活,但並不適合大規模尤其是當要處理像PHP這種需要佔用大量內存應用程序代碼時。

一個典型的網路應用伺服器由兩部分組成。客戶端連接部分負責用戶瀏覽器與HTTP連接,保持長時間的TCP/IP協議,通常是1到2分鍾。對於一個大型的系統,伺服器可能要同時承擔和處理數以萬計的並發連接。

這直接與Apache只有 500條進程即500個HTTP連接的處理能力上限相沖突。而現今的瀏覽器讓這個問題更加嚴重, 因為現在的瀏覽器平均每個主機會打開六個網站鏈接(幾年前是兩個網站鏈接)。所以當超過100個用戶同時訪問時,Apache就已經滿負荷了。

第二部分是應用程序處理部分,這部分承擔了代碼運算。在大多數系統中,這部分工作是最消耗RAM和CPU資源的,因此進程數量必須被嚴格限制,通常是大約每1GB的內存10個進程,或者每個CPU核心兩個進程。因此一台4GB RAM、16內核的伺服器最多隻能運行32個應用程序進程。

但是,問題的關鍵是,Apache直接連接前端客戶端通訊組件與後端應用程序進程組件。如此一來,前端部分往往保持長時間的連接,常常達到幾分鍾,這導致後端部分將持續消耗內存和CPU資源。目前還沒有直接的方法能夠在大型系統中找到前後端服務的平衡,因此他們必須被分離開來。

目前有兩個主要的解決方法。第一個方法,也是現有系統上最容易的方法,就是在Apache前端安裝負載均衡伺服器或者Nginx來處理客戶端連接部分。負載均衡伺服器,像HAProxy或者Nginx能輕松處理成千上萬條並發的連接,並使Apache能夠真正的僅作為後端應用程序工作,來處理32個或是更多的進程。

第二種方案,也是最通用的辦法就是用Nginx替換Apache,同時使用PHP-PFM作為應用伺服器。就像之前所提到的,這將分割前端客戶端通信部分和後端應用程序部分。Nginx處理HTTP通訊協議,同時FPM處理後端應用程序部分,和那32個進程進行交互。

然而這幾種方法仍然還存在一些問題,主要是如何載入伺服器的RPC調用,以及如何釋放已經完成的RPC調用。 這兩個問題都會在其他的博客中加以詳解。

另外,只使用Nginx的解決方法會給那些嚴重依賴於Apache功能的應用程序帶來問題,尤其是特別依賴rewrite rules, .htaccess, 或者mod_security等一些可選組件的應用程序。在這種情況下,在Apache前端增加安裝Nginx是最好的方法。

通常來說,所有新的系統都應該使用Nginx和PHP-FPM來部署。這能提供高性能增長特性,並且是平衡用戶和內存,CPU資源的最佳選擇。已存在的系統可以在前端使用Nginx或者HAProxy以達到同樣的效果,以便在當今現代網路環境中為用戶提供更優質的服務。

4、nginx怎麼在伺服器搭建網站

設置虛擬伺服器
listen:
nginx
配置文件至少包含一個
server
命令
,用來定義虛擬伺服器。當請求到來時,
nginx
會首先選擇一個虛擬伺服器來處理該請求。
虛擬伺服器定義在
http
上下文中的
server
中:
http
{
server
{
#
server
configuration
}
}
注意:
http
中可以定義多個
server
server
配置塊使用
listen
命令監聽本機
ip
和埠號(包括
unix
domain
socket
and
path),支持
ipv4、ipv6,ipv6地址需要用方括弧括起來:
server
{
listen
127.0.0.1:8080;
#
ipv4地址,8080埠
#
listen
[2001:3ca1:10f:1a:121b:0:0:10]:80;
#
ipv6地址,80埠
#
listen
[::]:80;
#
聽本機的所有ipv4與ipv6地址,80埠
#
the
rest
of
server
configuration
}
上述配置,如果不寫埠號,默認使用80埠,如果不寫
ip
,則監聽本機所有
ip。

5、tomct和nginx有什麼不同,都是用來做web伺服器的嗎?

從應用方面
tomcat一般是做動態解析才會用得到,支持jsp的解析,需要配置JDK支持
nginx,則一般是做靜態,本身不具備動態解析功能,需要配置其他插件或通過其他軟體協同才具備動態功能,比如php,tomcat,或者proxypass到win2008的iis伺服器做ASP的動態鏈接等,但nginx在靜態上的功能非常強大,也可做訪問控制,而且可以做成各種協議負載伺服器,包括流媒體的也可以做,具體得去官方網站去看;
在性能方面
如果再不做系統調優的情況下
tomcat一般支持並發並不高100個差不多了
nginx在靜態方面支持並發輕松達幾萬

如果這是個面試的人給你出的這道題目上你回答,你可以簡單的告訴他,兩者應用領域不一樣,tomcat是做java語言的動態解析,而nginx則是一款功能強大的負載軟體,配合各種插件可以實現各種功能

6、nginx一般和什麼伺服器搭配使用

nginx網站服務一般在linux系統下使用,性能可以得到正常的發揮,在我windows下,事倍功半。

我這邊經常使用centos6.8 64位下使用nginx。nginx安裝教程如下。



yum -y install gcc gcc-c++  ncurses-devel libxml2-devel 
openssl-devel curl-devel libjpeg-devel libpng-devel autoconf pcre-devel 
libtool-libs freetype-devel gd zlib-devel  zip unzip 
wget crontabs iptables file bison cmake patch mlocate 
flex diffutils automake make  readline-devel  
glibc-devel glibc-static glib2-devel  bzip2-devel 
gettext-devel libcap-devel logrotate ntp 
libmcrypt-devel patch      ------安裝nginx需要的組件 

wget  http://nginx.org/download/nginx-1.10.2.tar.gz ---獲取nginx

tar -zxvf ./nginx-1.10.2.tar.gz 
cd ./nginx-1.10.2
 
./configure 
--with-stream  --開啟nginx tcp代理服務
 --with-http_ssl_mole    ---開啟nginxhttps服務 
 需要開啟那些請百度查下,一般默認就可以的 
make        ----編譯nginx
make install   ----安裝nginx

chkconfig nginx on   --開機啟動nginx

7、如何在遠程Linux伺服器上搭建Nginx

1.將nginx的壓縮包nginx-1.8.0.tar.gz上傳到Linux伺服器

2.由於nginx是C語言開發的並且我們這里是通過編譯nginx的源碼來安裝nginx,所以Linux上要安裝C語言的編譯環境gcc,

如果已經安裝此步可以省略,否則執行命令:

yum install gcc-c++

 

3.nginx的http模塊使用pcre來解析正則表達式,所以需要在linux上安裝pcre庫。

yum install -y pcre pcre-devel

 

4.zlib庫提供了很多種壓縮和解壓縮的方式,nginx使用zlib對http包的內容進行gzip,所以需要在linux上安裝zlib庫。

 

yum install -y zlib zlib-devel

 

5.nginx不僅支持http協議,還支持https(即在ssl協議上傳輸http),所以需要在linux安裝openssl庫。

 

yum install -y openssl openssl-devel

 

6.在Linux上創建nginx的臨時目錄,注意我這里是在Linux文件系統下的
/var下創建文件夾temp在temp下創建nginx。即:/var/temp/nginx

7.執行命令:

./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_mole --http-client-body-temp-path=/var/temp/nginx/client --http-proxy-temp-path=/var/temp/nginx/proxy --http-fastcgi-temp-path=/var/temp/nginx/fastcgi --http-uwsgi-temp-path=/var/temp/nginx/uwsgi --http-scgi-temp-path=/var/temp/nginx/scgi

 

8.編譯源碼,安裝nginx:

make  make install

 

9.啟動nginx:

cd /usr/local/nginx/sbin/./nginx -c /usr/local/nginx/conf/nginx.conf

 

在瀏覽器中訪問: http://localhost 出現下面界面表示安裝成功:

我們此時也可以查看到nginx進程的運行情況:

 

ps aux|grep nginx

 

10.nginx伺服器的停止方式:

方式一:先查出nginx進程id再使用kill命令強制殺掉進程。 

cd /usr/local/nginx/sbin./nginx -s stop

  

方式二(推薦):待nginx進程處理任務完畢進行停止。

 

cd /usr/local/nginx/sbin./nginx -s quit

 

以上就是本文的全部內容,希望對大家的學習有所幫助

8、怎麼訪問nginx代理的伺服器

1.1
反向代理初印象
反向代理(Reverse
Proxy)方式是指以代理伺服器來接受Internet上的連接請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給Internet上請求連接的客戶端,此時代理伺服器對外就表現為一個伺服器。
從上圖可以看出:反向代理伺服器位於網站機房,代理網站Web伺服器接收Http請求,對請求進行轉發。
1.2
反向代理的作用
①保護網站安全:任何來自Internet的請求都必須先經過代理伺服器;
②通過配置緩存功能加速Web請求:可以緩存真實Web伺服器上的某些靜態資源,減輕真實Web伺服器的負載壓力;
③實現負載均衡:充當負載均衡伺服器均衡地分發請求,平衡集群中各個伺服器的負載壓力;

9、nginx伺服器有什麼作用

1、靜態HTTP伺服器
2、反向代理伺服器
3、負載均衡
4、虛擬主機
5、FastCGI

10、關於Nginx伺服器問題

nginx的404返回,一般情況下是因為文件不存在,然後的提示。
但根據你的描述,十次請求的話,就有一次head出現404,那文件存在以前許可權可以排除

1、試檢查一下nginx.conf的設置,是不是有limit的設置,比如limit_zone、limit_conn,這些參數也是有影響的。

2、檢查一下防火牆,是不是有相關的設置限制。

3、檢查一下nginx.conf的設置,看看有沒有valid_referers none blocked的防鏈設置。

與nginx伺服器相關的知識