1. 程式人生 > >使用Nginx搭建WEB伺服器

使用Nginx搭建WEB伺服器

一、Nginx概述:

Nginx (發音為[engine x])專為效能優化而開發,其最知名的優點是它的穩定性和低系統資源消耗,以及對併發連線的高處理能力(單臺物理伺服器可支援30000~50000個併發連線), 是一個高效能的 HTTP 反向代理伺服器,也是一個IMAP/POP3/SMTP 代理服。

Apache伺服器和nginx的優缺點:
   我們之前大量使用Apache來作為HTTPServerApache具有很優秀的效能,而且通過模組可以提供各種豐富的功能。
1)首先Apache對客戶端的響應是支援併發的,執行httpd這個daemon程序之後,它會同時產生多個子程序/執行緒,每個子程序/執行緒分別對客戶端的請求進行響應;

Apache兩種工作模式:prefork模式與worker模式

prefork每個子程序只有一個執行緒,效率高但消耗記憶體大,是lunix下預設的模式;worker模式每個子程序有多個執行緒,記憶體消耗低,但一個執行緒崩潰會牽連其它同子程序的執行緒。

2)另外,Apache可以提供靜態和動態的服務,例如對於PHP的解析不是通過效能較差的CGI實現的而是通過支援PHP的模組來實現的(通常為mod_php5,或者叫做apxs2)
3)缺點:
因此通常稱為Apache的這種Serverprocess-based server,也就是基於多程序的HTTPServer,因為它需要對每個使用者請求建立一個子程序

/執行緒進行響應;
這樣的缺點是,如果併發的請求非常多(這在大型入口網站是很常見的)就會需要非常多的執行緒,從而佔用極多的系統資源CPU和記憶體。因此對於併發處理不是Apache的強項。
4)解決方法:
目前來說出現了另一種WebServer,在併發方面表現更加優越,叫做asynchronousservers非同步伺服器。最有名的為NginxLighttpd。所謂的非同步伺服器是事件驅動程式模式的event-driven,除了使用者的併發請求通常只需要一個單一的或者幾個執行緒。因此佔用系統資源就非常少。這幾種又被稱為lightweight web server。舉例,對於10,000的併發連線請求,nginx
可能僅僅使用幾M的記憶體;而Apache可能需要使用幾百M的記憶體資源。
使用Apache來作為HTTPServer的情況我這裡不再多做介紹;上面我們介紹到Apache對於PHP等伺服器端指令碼的支援是通過自己的模組來實現的,而且效能優越。
我們同樣可以使用nginx或者lighttpd來作為HTTPServer來使用。
nginxApache類似都通過各種模組可以對伺服器的功能進行豐富的擴充套件,同樣都是通過conf配置檔案對各種選項進行配置。對於PHP等,nginx沒有內建的模組來對PHP進行支援,而是通過FastCGI來支援的。
nginx則沒有自己提供處理PHP的功能,需要通過第三方的模組來提供對PHP進行FastCGI方式的整合。

、編譯安裝Nginx軟體

目前Nginx的最新穩定版本為1.0.8,開發版本為1.1.6,其安裝檔案可以從官方網站http://www.nginx.org下載,下面以穩定版為例,介紹nginx的安裝步驟。

1、安裝支援軟體:

   Nginx的配置及執行需要pcrezlib等軟體包的支援,因此應預先安裝這些軟體的開發包(devel),以便提供相應的庫和標頭檔案,確保Nginx的安裝順利完成。

[[email protected] /]#yum -y install pcre-devel zlib-devel

2、建立執行使用者、組:

   Nginx服務程式預設以nobody身份執行,建議為其建立專門的使用者賬號,以便更準確地控制其訪問許可權,增加靈活性、降低安全風險。如:建立一個名為nginx的使用者,不建立宿主目錄,也禁止登入到shell環境。

[[email protected] /]#useradd -M -s /sbin/nologin nginx

3、編譯安裝nginx

[[email protected] /]#tar zxf nginx-1.0.8.tar.gz -C /usr/src/

[[email protected] /]#cd /usr/src/nginx-1.0.8

[[email protected] nginx-1.0.8]#./config --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

[[email protected] nginx-1.0.8]#make && make install

[[email protected] /]#ln -s /usr/local/nginx/sbin/* /usr/local/sbin

注:配置前可以參考:./configure  --help給出說明

--prefix:設定Nginx的安裝目錄

--user—group:指定Nginx執行使用者和組

--with-http_stub_status_module:啟用http_stub_status_module模組以支援狀態統計

四、編寫nginx啟動指令碼

1、檢查配置檔案

apache的主程式httpd類似,Nginx的主程式也提供了”-t”選項用來對配置檔案進行檢查,以便找出不當或錯誤的配置。配置檔案nginx.conf預設位於安裝目錄下的conf/子目錄中。若要檢查位於其他位置的配置檔案,可使用”-c”選項來指定路徑。

233209167.jpg

2、啟動、停止nginx

   直接執行nginx即可啟動Nginx伺服器,這種方式將使用預設的配置檔案,若要改用其他配置檔案,需新增”-c  配置檔案路徑選項來指定路徑。需要注意的是,若伺服器中已安裝有httpd等其他WEB服務軟體,應採取措施避免部突。

233222366.jpg

235749225.jpg

   當Nginx程序執行時,PID號預設存放在logs/目錄下的nginx.pid檔案中,因此若改用kill命令,也可以根據nginx.pid檔案中的PID號來進行控制。

[[email protected] /]#killall -9 nginx

3、編寫nginx啟動指令碼

   為了使Nginx服務的啟動、停止、過載等操作更加方便,可以編寫Nginx服務指令碼,並使用chkconfigservice工具來進行管理,也更加符合RHEL系統的管理習慣。

[[email protected] /]#vim /etc/init.d/nginx

234558694.jpg

[[email protected] /]#chmod +x /etc/init.d/nginx

[[email protected] /]#chkconfig --add nginx

這樣一來,就可以通過nginx指令碼來啟動、停止、重啟、過載Nginx伺服器了。

五、修改nginx.conf配置檔案

   在Nginx伺服器的主配置檔案nginx.conf中,包括全域性配置、I/O事件配置、HTTP配置這三大塊內容,配置語句的格式為關鍵字值;”(末尾以分號表示結束),以”#”開始的部分表示註釋。

1、全域性配置:由各種配置語句組成,不使用特定的界定標記。全域性配置部分包括執行使用者、工作程序數、錯誤日誌、PID存放位置等基本設定。

000059815.jpg

2、I/O事件配置:使用”events {}”界定標記,用來指定Nginx程序的I/O響應模型,每個程序的連線數等設定。

000253352.jpg

3、HTTP配置:使用”http{}”界定標記,包括訪問日誌、HTTP埠、網頁目錄、預設字符集、連線保持、以及虛擬主機、PHP解析等一系列設定。其中大部分配置語句包含在子界定記”servier {}”內。

000716106.jpg

由於內容太多就不一一解釋了,大家可以自行研究。

六、配置狀態統計以及虛擬主機

1、nginx的訪問狀態統計

   Nginx內建了HTTP_STUB_STATUS狀態統計模組,用來反饋當前的WEB訪問情況。配置

編譯引數時可新增—with-http_stub_stastus_module來啟用此模組。要使用Nginx的狀態統計功能,除了啟用內建模組以外,還需要修改nginx.conf檔案,指定訪問位置並開啟stub_status配置。在http{}配置的server{}子配置內新增如下配置項。

001450427.jpg

重啟服務,在瀏覽器中輸入URL訪問如下:

[[email protected] /]#service nginx restart

001516874.jpg

2、配置基於域名的虛擬主機

使用Nginx搭建虛擬主機伺服器時,每個虛擬WEB站點擁有獨立的”server {}”配置段,各自

監聽的IP地址、埠號可以單獨指定,當然網站名稱也是不同的。

001855174.jpg

配置兩個”server {}”區域,分別對應兩個WEB站點,指定各自的網站名稱、監聽地址、網站根目錄、訪問日誌等資訊,然後過載配置。

002456376.jpg

重啟服務,在瀏覽器中分別輸入不同域名,訪問不同的網站。

[[email protected] /]#service nginx restart

003203913.jpg

由於只有晚上cai有時間更新部落格,所以寫的質量不是很好,希望大家諒解,也希望文章對大家有所幫助。

相關推薦

輕鬆使用Nginx搭建web伺服器

如果讀者以前做過web開發的話,就應該知道如何去搭建一個web伺服器來跑你的web站點,在windows下你可能會選擇去用IIS,十分的快捷,在linux下,你可能首先會想到apache,“一哥”( W3Techs網站資料的排名)啦       今天小編要介紹後起之秀n

使用Nginx搭建WEB伺服器

一、Nginx概述:Nginx (發音為[engine x])專為效能優化而開發,其最知名的優點是它的穩定性和低系統資源消耗,以及對併發連線的高處理能力(單臺物理伺服器可支援30000~50000個併發連線), 是一個高效能的 HTTP 和反向代理伺服器,也是一個IMAP/P

nginx功能之一 搭建web伺服器

一      nginx的優點           1、可以高併發連線           官方測試Nginx能夠支撐5萬併發連線,實際生產環境中可以支撐2~4萬併發連線數。           原因,主要是Nginx使用了最新的epoll(Linux2.6核心)和kq

CocosCreator開發筆記(2)-Linux系統用Nginx搭建Web釋出伺服器

上文介紹了用簡單的Python命令搭建CocosCreator的Web釋出伺服器,這一般在開發除錯中使用。如果是用於正式伺服器,則還是需要用專業的Web伺服器軟體,以滿足高效能、靈活、穩定的商用需求。 Nginx簡介 Nginx是一款高效能、輕量級的HT

使用Haproxy及Nginx搭建Web群集

腳本 netstat 客戶端使用 更改 tpc 自測 st2 實驗環境 lan 什麽是HAProxy? HAProxy是一個使用C語言編寫的自由及開放源代碼軟件,其提供高可用性、負載均衡,以及基於TCP和HTTP的應用程序代理,可以運行於大部分主流的Linux操作系統上。本

Haproxy+Nginx搭建Web群集

CI 1.5 var 創建 fig login 18C 刷新 查看 Haproxy 是一種群集調度工具 ,是一款提供高可用性、負載均衡以及基於TCP(第四層)和HTTP(第七層)應用的代理軟件,支持虛擬主機,它是免費、快速並且可靠的一種解決方案。 Haproxy特別適用於那

CentOS7 上部署Haproxy及Nginx 搭建Web群集

images 防火 .com 系統 then tar dont -i con HAProxy是一個使用C語言編寫的自由及開放源代碼軟件,其提供高可用性、負載均衡,以及基於TCP和HTTP的應用程序代理,可以運行於大部分主流的Linux操作系統上。本次實驗使用三臺服務器搭建W

使用 HAProxy + Nginx 搭建 Web 群集

targe chroot listen example tar water obi b- 安裝目錄 HAProxy 是目前比較流行的一種群集調度工具,同類群集調度工具中,同 LVS 對比,LVS 性能最好,但是搭建相對比較復雜,Nginx 的 upstream 模塊支持群集

怎樣在Win7系統中搭建Web伺服器,並在區域網中訪問

第一步:開啟控制面板 第二步:進入<程式> 第三步:開啟或關閉windows功能 第四步:點選展開Internet資訊服務,全部都選中 第五步:關閉防火牆,並開啟全球資訊網服務(http)

centos7 搭建WEB伺服器

centos7 搭建WEB伺服器 2017年09月17日 09:44:50 逝然1994 閱讀數:18321 標籤: centosapacheweb伺服器 更多 個人分類:&nbs

Ubuntu 搭建Web伺服器(MySQL+PHP+Apache)詳細教程 (全網最全)

Ubuntu 搭建Web伺服器(MySQL+PHP+Apache)詳細教程 (全網最全) 看了好多人的部落格,有的不全 or 有問題,整理了一下,適合小白 新手先整理幾個小問題 1.為啥使用 Linux 搭建伺服器? 一個是因為主流的雲伺服器太貴,買個低配的容易崩,聽說 Linux 比較穩定,之後 2.

Nginx*(靜態web伺服器)安裝

Nginx 安裝配置 Nginx("engine x")是一款是由俄羅斯的程式設計師Igor Sysoev所開發高效能的 Web和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。 在高連線併發的情況下,Nginx是Apache伺服器不錯的

20秒搭建web伺服器,跨平臺(mac,window)

伺服器: http-server 問題: 其實搭建web伺服器有很多種方法,比如: 1.本地的 apache, nginx 2.自己下載安裝一個軟體,如phpServer 3.node.js 靜態web伺服器 (頁面載入圖片時不方便) 4.http-server(推薦) 5.釋出到遠端伺服器

怎樣在Win7系統中搭建Web伺服器

區域網Web伺服器的主要功能是實現資源共享,同時藉助於區域網伺服器訪問頁面可有效的實現資訊的同步。利用Web伺服器,我們隨時隨地都可以將自己的資訊上傳到伺服器端,讓其它關注你的使用者能在第一時間內瞭解的思想和動態。下面筆者就如何在Windows7系統下搭建Web伺服器與大家交流一下。 方

Nginx高效能Web伺服器》系列分享專欄

《Nginx高效能Web伺服器》系列分享專欄 [作者:Poechant] Nginx是目前最流行的基於BSD-like協議、輕量級、高效能的HTTP伺服器、反向代理伺服器和電子郵件(SMTP/POP3/IMAP)伺服器。CSDN的Nginx專欄引領大家Step by Step地一起領略當今最強大高效能的W

Koa原始碼閱讀(一)從搭建Web伺服器說起

先複習一下使用原生 Node.js 搭建一個 Web 伺服器。 var http = require('http'); var server = http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'te

Ubuntu下搭建web伺服器

一、開始安裝MySQL5 sudo apt-get install mysql-server mysql-client 二、安裝Apache2 Apache2的是作為一個Ubuntu的軟體包,因此我們可以直接用下面命令安裝它: sudo apt-get ins

nodejs搭建web伺服器初級

    1.1簡介   Node.js是基於Chrome JavaScript執行時建立的一個平臺,實際上它是對Google Chrome V8引擎進行了封裝,它主要用於建立快速的、可擴充套件的網路應用。 也就是說,瀏覽器的Javascript是瀏覽器js程式碼解析,而Node.js則是伺服器端JS的程式

Nodejs搭建web伺服器

使用Nodejs + http 建立web伺服器 1、首先建立一個server.js檔案,建立伺服器,以及對應css和js檔案的引入和判斷 var http=require(‘http’); var fs = require(‘fs’); var url = r

使用nginx搭建web服務,問題彙總

1、 問題:nginx配置中引用了lua程式碼,lua的作用是:將請求資料寫入到redis,但是發現在連線redis時,連線失敗,原因是:無法解析其域名。 解決:在nginx配置檔案目錄下:nginx.conf的http模組,新增一行域名解析:resolver 10.**