天天看點

nginx安裝與搭建教程

Nginx

1   什麼是Nginx

Nginx ("engine x") 是一個高性能的 HTTP和反向代理伺服器,也是一個 IMAP/POP3/SMTP 伺服器。

正向代理:

nginx安裝與搭建教程

反向代理:

nginx安裝與搭建教程

很多大網站都是使用nginx做反向代理,應用非常廣泛。

Nginx是一款高性能的http 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器。由俄羅斯的程式設計師Igor Sysoev所開發,官方測試nginx能夠支支撐5萬并發連結,并且cpu、記憶體等資源消耗卻非常低,運作非常穩定。

2   應用場景

1、http伺服器,可以做靜态網頁的http伺服器。

2、配置虛拟機。

一個域名可以被多個ip綁定。可以根據域名的不同吧請求轉發給運作在不同端口的伺服器。

3、反向代理,負載均衡。把請求轉發給不同的伺服器。

3   安裝及配置

官方網站:http://nginx.org/

最後的一個穩定版本:1.8.0版本。有兩個版本windows版本和linux版本。生産環境都是使用linux版本。

nginx安裝與搭建教程

nginx是C語言開發,建議在linux上運作,本教程使用Centos6.4作為安裝環境。

n  gcc

       安裝nginx需要先将官網下載下傳的源碼進行編譯,編譯依賴gcc環境,如果沒有gcc環境,需要安裝gcc:yum install gcc-c++

n  PCRE

       PCRE(Perl Compatible Regular Expressions)是一個Perl庫,包括 perl 相容的正規表達式庫。nginx的http子產品使用pcre來解析正規表達式,是以需要在linux上安裝pcre庫。

yum install -y pcre pcre-devel

注:pcre-devel是使用pcre開發的一個二次開發庫。nginx也需要此庫。

n  zlib

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

yum install -y zlib zlib-devel

n  openssl

       OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協定,并提供豐富的應用程式供測試或其它目的使用。

       nginx不僅支援http協定,還支援https(即在ssl協定上傳輸http),是以需要在linux安裝openssl庫。

yum install -y openssl openssl-devel

第一步:把nginx的源碼包上傳至linux伺服器

第二步:解壓源碼包。 tar -zxf nginx-1.8.0.tar.gz

第三步:進入nginx-1.8.0檔案夾。使用configure指令建立makefile。

第四步:參數設定如下:

./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_module \

--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

注意:上邊将臨時檔案目錄指定為/var/temp/nginx,需要在/var下建立temp及nginx目錄

第五步:make

第六步make install

nginx安裝與搭建教程

在nginx目錄下有一個sbin目錄,sbin目錄下有一個nginx可執行程式。

./nginx

nginx安裝與搭建教程
nginx安裝與搭建教程

關閉指令:相當于找到nginx程序kill。

./nginx -s stop

退出指令:

./nginx -s quit

等程式執行完畢後關閉,建議使用此指令。

./nginx -s reload

可以不關閉nginx的情況下更新配置檔案。

   Nginx在Windows平台的配置

能夠使用Nginx搭建Tomcat叢集,并完成負載均衡.

nginx安裝與搭建教程

背景:

網際網路飛速發展的今天,大使用者量高并發已經成為網際網路的主體.怎樣能讓一個網站能夠承載幾萬個或幾十萬個使用者的持續通路呢?這是一些中小網站急需解決的問題。用單機tomcat搭建的網站,在比較理想的狀态下能夠承受的并發通路量在150到200左右。按照并發通路量占總使用者數量的5%到10%這樣計算,單點tomcat網站的使用者人數在1500到4000左右。對于一個為全國範圍提供服務的網站顯然是不夠用的,為了解決這個問題引入了負載均衡方法。負載均衡就是一個web伺服器解決不了的問題可以通過多個web伺服器來平均分擔壓力來解決,并發過來的請求被平均配置設定到多個背景web伺服器來處理,這樣壓力就被分解開來。

負載均衡伺服器分為兩種一種是通過硬體實作的負載均衡伺服器,簡稱硬負載例如:f5。另一種是通過軟體來實作的負載均衡,簡稱軟負載:例如apache和nginx。硬負載和軟負載相比前者作用的網絡層次比較多可以作用到socket接口的資料鍊路層對發出的請求進行分組轉發但是價格成本比較貴,而軟負載作用的層次在http協定層之上可以對http請求進行分組轉發并且因為是開源的是以幾乎是0成本,并且阿裡巴巴,京東等電商網站使用的都是Nginx伺服器。

完成Nginx負載均衡,那麼需要先來介紹Tomcat的安裝和配置,我們首先要來配置Tomcat完成叢集的配置.因為我們沒有多台伺服器運作Tomcat.那麼我們可以模拟在一台伺服器上運作多個Tomcat程式.

步驟一:下載下傳Tomcat:

http://tomcat.apache.org/download-70.cgi

nginx安裝與搭建教程

步驟二:安裝和配置Tomcat:

直接将下載下傳後的Tomcat解壓在本地磁盤:解壓兩個分别命名為tomcat1和tomcat2.

分别完成如下配置:(需要将tomcat帶有端口号的地方改成不同的端口即可.)分别打開兩個tomcat的conf下的server.xml

tomcat1/conf/server.xml

nginx安裝與搭建教程
nginx安裝與搭建教程
nginx安裝與搭建教程
nginx安裝與搭建教程

tomcat2/conf/server.xml

nginx安裝與搭建教程
nginx安裝與搭建教程
nginx安裝與搭建教程
nginx安裝與搭建教程

将nginx-1.8.0.zip解壓包某個盤符下運作:目錄結構如下:

nginx安裝與搭建教程

輕按兩下nginx.exe即可運作:打開浏覽器http://localhost:80顯示如下頁面:

nginx安裝與搭建教程

說明安裝成功!!!

關閉nginx需要使用:

相當于找到nginx程序kill。

nginx -s stop

重新加載配置檔案:

nginx -s reload

可以不關閉nginx的情況下更新配置檔案.

打開C:\nginx-1.8.0\conf\nginx.conf這個檔案:

nginx安裝與搭建教程

***** 通過以上的配置我們已經可以通過通路www.taoge.com通路到不同的tomcat來分擔伺服器端的壓力.請求負載過程中會話資訊不能丢失.那麼需要在多個tomcat中session需要共享.

* 配置Tomcat的session共享可以有三種解決方案:

第一種是以負載均衡伺服器本身提供的session共享政策,每種服務期的配置是不一樣的并且nginx本身是沒有的。

第二種是利用web容器本身的session共享政策來配置共享。針對于weblogic這種方式還是靠普的。但是針對于tomcat這種方式存在很大的缺陷,主要因為是依靠廣播方式來實作的session複制,會浪費很多帶寬導緻整個網絡反映緩慢。官網也建議這種方式最好不要超過4台tomcat,具體的内容可參考/webapps/docs/cluster-howto.html裡面有詳細的說明。下面是具體的配置過程

第三種是Tomcat叢集+redis的Session共享配置方法.

在這裡我們以第二種方式為例:

步驟一:修改server.xml檔案,最簡單的叢集配置隻需要将節點中注釋掉的下面這句取消注釋即可:

Xml代碼:

使用這樣方法配置的叢集會将Session同步到所在網段上的所有配置了叢集屬性的執行個體上(此處講所在網段可能不準确,是使用Membership 的address和port來區分的。tomcat叢集的執行個體如果在Membership配置中有相同的address和port值的tomcat被分到同一個叢集裡邊。他們的session是互相共享的,同一個session的叢集被稱為一個cluster。可以配置多個cluster,但是cluster和cluster之間的session是不共享的)。也就是說如果該廣播位址下的所有Tomcat執行個體都會共享Session,那麼假如有幾個互不相關的叢集,就可能造成Session複制浪費,是以為了避免浪費就需要對節點多做點設定了,如下:

Xml代碼

加了一個Channel,裡面包了個Membership,咱們要關注的就是membership的port屬性和address屬性,不同的叢集設定不同的port值或address值,從目前的使用來看,基本上是隔離開了。

步驟二:修改項目的web.xml檔案:

web.xml檔案的修改很簡單:隻需要在節點中添加這個節點<distributable/>就可以了。

OK,有了這二步就實作了Tomcat的叢集和Session的共享了。

繼續閱讀