導語:人往高處走,水往低處流。技術(shù)發(fā)展往高層堆疊,技術(shù)學習則往底層深處探索。
參考文章:
1、 百度百科:
IIS:https://baike.baidu.com/item/iis/19755079
Apache:https://baike.baidu.com/item/Apache/6265
Nginx:https://baike.baidu.com/item/nginx
2、 博客:https://www.cnblogs.com/vipyoumay/archive/2017/08/31/7455431.html
3、 菜鳥教程:https://www.runoob.com/w3cnote/nginx-setup-intro.html
一、各種web服務(wù)器定義及區(qū)別聯(lián)系
1.1、為什么要了解web服務(wù)器?
學習是具有主觀能動性的一種行為(學習是需要目的的),為什么要學習并了解web服務(wù)器呢?在之前的文章中,我已經(jīng)能在自己的電腦上開發(fā)出簡單的web網(wǎng)站了,但是網(wǎng)站具體是怎么在電腦上運行的,卻不得而知,如果要把網(wǎng)站發(fā)布給其它的網(wǎng)友看又該怎么辦呢?這篇文章就是為了嘗試回答這些問題的。
鏈接文章:
a、php基礎(chǔ)知識
b、web客戶端編程基礎(chǔ)-HTML、css
c、web客戶端編程基礎(chǔ)-JAVAScript
d、數(shù)據(jù)庫基礎(chǔ)筆記-SQL
e、 web網(wǎng)站開發(fā)基礎(chǔ)
1.2、web服務(wù)器
來源:
1989年,互聯(lián)網(wǎng)之父Berners-Lee向其雇主CERN提出了一個新項目,目的是通過使用超文本系統(tǒng)來緩解科學家之間的信息交流。該項目導致Berners-Lee在1990年編寫了兩個方案:
a、一個名為WorldWideWeb的瀏覽器。
b、世界上第一個網(wǎng)絡(luò)服務(wù)器,后來被稱為CERN httpd,它運行在NeXTSTEP上。在1991年至1994年期間,用于通過萬維網(wǎng)沖浪和交換數(shù)據(jù)的早期技術(shù)的簡單性和有效性有助于將其移植到許多不同的操作系統(tǒng),并將其用于科學組織和大學,然后傳播到行業(yè)。
1994年,Berners-Lee決定組建萬維網(wǎng)聯(lián)盟(W3C),通過標準化過程來管理涉及的許多技術(shù)(HTTP,HTML等)的進一步發(fā)展。
功能定義:
Web服務(wù)器的主要功能是存儲,處理和傳遞網(wǎng)頁給客戶。客戶端和服務(wù)器之間的通信使用超文本傳輸??協(xié)議(HTTP)進行。交付的頁面最常見的是HTML文檔,除了文本內(nèi)容之外,還可能包含圖像,樣式表和腳本。
一個用戶代理,通常是web瀏覽器或web爬蟲,通過發(fā)起一個HTTP請求以獲取服務(wù)器資源,服務(wù)器根據(jù)請求返回該資源或由于某種原因響應錯誤消息。
雖然主要功能是提供內(nèi)容,但HTTP的完整實現(xiàn)還包括從客戶端接收內(nèi)容的方式。此功能用于提交Web表單,包括上傳文件。許多通用Web服務(wù)器還支持使用Active Server Pages(ASP),PHP或其他腳本語言的服務(wù)器端腳本。這意味著Web服務(wù)器的行為可以在單獨的文件中腳本化,而實際的服務(wù)器軟件保持不變。通常,此函數(shù)用于動態(tài)生成HTML文檔(“即時”),而不是返回靜態(tài)文檔。前者主要用于從數(shù)據(jù)庫檢索或修改信息。后者通常快得多,并且更容易被緩存,但不能提供動態(tài)內(nèi)容。
Web服務(wù)器不僅用于為萬維網(wǎng)服務(wù)。它們也可以被嵌入到諸如打印機,路由器,網(wǎng)絡(luò)攝像機等設(shè)備中,并且僅服務(wù)于本地網(wǎng)絡(luò)。然后,web服務(wù)器可以用作用于監(jiān)視或管理所討論的設(shè)備的系統(tǒng)的一部分。這通常意味著客戶端計算機上不需要安裝其他軟件,因為只需要一個網(wǎng)絡(luò)瀏覽器(現(xiàn)在大多數(shù)操作系統(tǒng)都包含在內(nèi))。
web服務(wù)器工作原理:
HTTP協(xié)議基于TCP協(xié)議上,是一個應用層協(xié)議,用于用戶代理和Web服務(wù)器進行通信。Web服務(wù)器通常采用一問一答的方式進行工作。
主流web服務(wù)器:Apache、IIS、Nginx
1.3、應用服務(wù)器
在Web服務(wù)器發(fā)展的同一個時期,應用服務(wù)器已經(jīng)存在并發(fā)展很長一段時間了。一些公司為Unix開發(fā)了Tuxedo(面向事務(wù)的中間件)、TopEnd、Encina等產(chǎn)品,這些產(chǎn)品都是從類似IMS和CICS的主機應用管理和監(jiān)控環(huán)境衍生而來的。大部分的這些產(chǎn)品都指定了“封閉的”產(chǎn)品專用通信協(xié)議來互連胖客戶機(“fat” client)和服務(wù)器。在90年代,這些傳統(tǒng)的應用服務(wù)器產(chǎn)品開始嵌入HTTP通信功能,剛開始要利用網(wǎng)關(guān)來實現(xiàn)。不久后它們之間的界線開始變得模糊了。
同時,web服務(wù)器越來越成熟,可以處理更高的負載、更多的并發(fā)和擁有更好的特性;應用服務(wù)器開始添加越來越多的基于HTTP的通信功能。所有的這些導致了web服務(wù)器與應用服務(wù)器的界線變得更窄了。
目前,“應用服務(wù)器”和“web服務(wù)器”之間的界線已經(jīng)變得模糊不清了。但是人們還把這兩個術(shù)語區(qū)分開來,作為強調(diào)使用。
當有人說到“web服務(wù)器”時,你通常要把它認為是以HTTP為核心、web UI為向?qū)У膽谩.斢腥苏f到“應用服務(wù)器”時,你可能想到“高負載、企業(yè)級特性、事務(wù)和隊列、多通道通信(HTTP和更多的協(xié)議)”。但現(xiàn)在提供這些需求的基本上都是同一個產(chǎn)品。
1.4、web應用程序容器
那么什么是容器呢?
容器是位于應用程序/組件和服務(wù)器平臺之間的接口集合,使得應用程序/組件可以方便部署到服務(wù)器上運行。
Web服務(wù)器的出現(xiàn)的標志著WWW時代的帶來,世界變得更加平面化。當初嘗到甜頭的開創(chuàng)者們開始不滿足與在互聯(lián)網(wǎng)上獲取靜態(tài)資源,于是出現(xiàn)了CGI腳本來動態(tài)獲取資源。再后來網(wǎng)絡(luò)發(fā)展方向也是朝著增強Web服務(wù)器動態(tài)獲取資源的能力前進。代表性的動態(tài)技術(shù):CGI(Common Gateway Interface,公用網(wǎng)關(guān)接口)、PHP、JSP、ASP
1.5、反向代理服務(wù)器
反向代理是代理服務(wù)器的一種。它根據(jù)客戶端的請求,從后端的服務(wù)器(如Web服務(wù)器)上獲取資源,然后再將這些資源返回給客戶端。與前向代理不同,前向代理作為一個媒介將互聯(lián)網(wǎng)上獲取的資源返回給相關(guān)聯(lián)的客戶端,而反向代理是在服務(wù)器端(如Web服務(wù)器)作為代理使用,而不是客戶端。客戶端通過前向代理可以訪問很多不同的資源,而反向代理是很多客戶端都通過它訪問不同后端服務(wù)器上的資源,而不需要知道這些后端服務(wù)器的存在,而以為所有資源都來自于這個反向代理服務(wù)器。
1.6、小結(jié)
Web服務(wù)器是提供WWW服務(wù)的程序;Web容器是提供給開發(fā)者的框架;Web應用程序服務(wù)器內(nèi)容豐富得多,既可用各廠商通常遵循一定的工業(yè)標準并自定義擴展功能而成,也可以利用開源組件輕量級拼裝打造;反向代理服務(wù)器在企業(yè)級應用中表現(xiàn)突出,具有解決集中式安全,負載均衡等等優(yōu)點。
二、IIS 及其簡單應用
2.1、定義及優(yōu)劣
IIS(Internet Information Services) 是一個支持HTTP和FTP發(fā)布服務(wù)的Web服務(wù)器。它是由微軟開發(fā)的web服務(wù)器,需要收費,主要用來跑asp.net asp php,只能在windows下運行。
在穩(wěn)定性上來說,IIS在實際使用中經(jīng)常出現(xiàn)500錯誤,而且有時候會出現(xiàn)莫名其妙的假死現(xiàn)象,用戶需要不定期的重新啟動IIS服務(wù)才能保證網(wǎng)站的正常。安全性來說,IIS6以前的版本有安全隱患,之后的版本已經(jīng)優(yōu)化。因為IIS是Windows系統(tǒng)的一部分,所以并不開源,但是這好處是對熟悉windows的用戶來說,配置和開啟操作簡單。
2.2、IIS 7.0 的開啟操作
首先,操作系統(tǒng)是windows
Vista開啟IIS 7.0
在Vista中,我們可以看得到新版本的IIS 7.0看上去比6.0有了很大的改進。你可以自由開啟IIS 7.0,并在個人電腦上架設(shè)自己的網(wǎng)站。
下面是開啟方法:
1、熱鍵WinKey+R—輸入"cmd.exe" (不帶引號)。
2、輸入下列命令:
start /w pkgmgr.exe /iu:IIS-WebServerRole;IIS-WebServerFeature;IIS-FTPServerFeature
然后,就會自動安裝IIS 7.0。而且,IIS 7.0已經(jīng)完全組件化,類似于Apache。
Win7開啟IIS 7.0
默認情況下,windows7安裝時是不會自動安裝iis,只能手動安裝,需要有安裝盤。
安裝方法:
開始-控制面板-程序-打開或關(guān)閉windows功能-internet信息服務(wù)-Web管理工具
如下圖所示:
2.3、IIS 網(wǎng)站的配置
1、打開IIS管理器,如下圖所示:
2、新增網(wǎng)站:鼠標右擊“網(wǎng)站”這個文件夾>>點擊“添加網(wǎng)站”,出現(xiàn)如下彈窗:
網(wǎng)站名稱:這個自定義,是為區(qū)分不同網(wǎng)站使用。
物理路徑:網(wǎng)站代碼的位置,html代碼等
綁定:分配IP和端口、解析指定的域名,如果要綁定多個域名,可以在后面“編輯”中操作
3、填寫無誤后,點擊確定,“網(wǎng)站”文件夾下就出現(xiàn)新增的網(wǎng)站了,如下圖所示:
左側(cè)列表是IIS服務(wù)器目前所有的網(wǎng)站列表
中間項目是針對某個網(wǎng)站所提供的服務(wù)和設(shè)置
右側(cè)列表是這個網(wǎng)站的操作:
瀏覽:打開網(wǎng)站代碼的根目錄
編輯權(quán)限:設(shè)置網(wǎng)站代碼對外的權(quán)限
綁定:IP及端口、域名綁定的設(shè)置,新增的彈窗只能設(shè)置一個域名,這里就可以設(shè)置多個
基本設(shè)置:修改網(wǎng)站名稱、代碼路徑地址
管理網(wǎng)站:對網(wǎng)站服務(wù)器的重新啟動、啟動、停止、刪除等操作
瀏覽網(wǎng)站:這里就可以點擊查看網(wǎng)站代碼運行的對外實際效果
高級設(shè)置:略
限制:寬帶等限制
就這么點點點,IIS就能很快很簡單地把網(wǎng)站部署好了。若中間遇到了什么不可描述的問題~~就自行g(shù)oogle吧。
2.4、IIS 網(wǎng)站的路由尋址配置
很多框架或者網(wǎng)站代碼,是需要在web服務(wù)器上配置路由尋址的。IIS的也不是很麻煩:
1、首先,得自己寫好 .htaccess 文件(一般框架都有自帶的),例如:
```
Options +FollowSymLinksRewriteRule ^(w{2})/diy/com/ep365/assets/images/left/tab/(.+).png$ /diy/com/ep365/assets/images/left/tab/$2.png [L]RewriteRule ^(w{2})/diy/fontimage/(.+).png$ /diy/fontimage/$2.png [L]IndexIgnore */*RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule .index.php
```
2、IIS導入規(guī)則,雙擊”URL重寫”>>點擊“導入規(guī)則”>>選擇.htaccess文件,確定生成如下圖所示:
三、Apache及其簡單配置
3.1、apache定義
Apache是世界使用排名第一的Web服務(wù)器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務(wù)器端軟件之一。它快速、可靠并且可通過簡單的API擴充,將Perl/Python等解釋器編譯到服務(wù)器中。同時Apache音譯為阿帕奇,是北美印第安人的一個部落,叫阿帕奇族,在美國的西南部。也是一個基金會的名稱、一種武裝直升機等等。
Apache HTTP Server(簡稱Apache)是Apache軟件基金會的一個開放源碼的網(wǎng)頁服務(wù)器,可以在大多數(shù)計算機操作系統(tǒng)中運行,由于其多平臺和安全性被廣泛使用,是最流行的Web服務(wù)器端軟件之一。它快速、可靠并且可通過簡單的API擴展,將Perl/Python等解釋器編譯到服務(wù)器中。Apache源于NCSAhttpd服務(wù)器,經(jīng)過多次修改,成為世界上最流行的Web服務(wù)器軟件之一。
3.2、Apache Web服務(wù)器軟件特性
1.支持最新的HTTP/1.1通信協(xié)議
2.擁有簡單而強有力的基于文件的配置過程
3.支持通用網(wǎng)關(guān)接口
4.支持基于IP和基于域名的虛擬主機
5.支持多種方式的HTTP認證
6.集成Perl處理模塊
7.集成代理服務(wù)器模塊
8.支持實時監(jiān)視服務(wù)器狀態(tài)和定制服務(wù)器日志
9.支持服務(wù)器端包含指令(SSI)
10.支持安全Socket層(SSL)
11.提供用戶會話過程的跟蹤
12.支持FastCGI
13.通過第三方模塊可以支持JavaServlets
3.3、apache配置及優(yōu)化
“我們在使用Apache作為web服務(wù)器的過程中,只有對Apache服務(wù)器進行適當?shù)膬?yōu)化配置,才能讓Apache發(fā)揮出更好的性能;再反過來說,如果Apache的配置非常糟糕,Apache可能無法正常為我們服務(wù)。因此,針對我們的應用需求對Apache服務(wù)器的配置進行一定的優(yōu)化是必不可少的。” --百度百科
目前apache和nginx好像還沒有看到像IIS一樣的可視化配置。在windows和linux上,apache和nginx 都是以編輯配置文件的形式來配置。
1、目錄結(jié)構(gòu)詳解
一般情況下,apache安裝好后,其目錄結(jié)構(gòu)大致如圖(linux也差不多):
conf #主要存放了配置文件httpd.conf
logs #日志文件存放的目錄
bin #執(zhí)行文件存放的目錄,比如:(ab 常用壓測工具),(apachectl 控制apache啟動的,實際調(diào)用的httpd),(apxs apache擴展編譯的工具),(htpasswd 為網(wǎng)站設(shè)置用戶名密碼),(httpd apache的控制命令程序),(rotatelogs apache的日志輪詢工具)等
cgi-bin #CGI處理程序的存放目錄
manual #一些幫助及說明文檔
modules #apache加載的module文件存放目錄(缺省配置)
可能還有這么幾個目錄:
conf.d #里面存放的是一些額外的參數(shù)文檔,比如php.conf,可以自定義設(shè)置一定配置參數(shù)放置到該目錄
vhost #虛擬主機配置文件存放的目錄,這個也是自定義的—phpstudy則直接把配置放到conf/vhost.conf 這個文件里,效果是一樣的。
run #PID文件存放的目錄(可以自行更改)
htdocs #apache網(wǎng)站程序文件存放目錄(可以自定義)
2、httpd.conf 主配置文件詳解
```
ServerRoot"D:/phpStudy/PHPTutorial/Apache"// apache安裝目錄Listen 80//監(jiān)聽端口# Example:# LoadModule foo_module modules/mod_foo.so//拓展加載<IfModule unixd_module>User daemon//apache運行用戶Group daemon//apache運行組</IfModule>ServerAdmin admin@php.cn//管理員郵箱ServerName localhost//管理地址-本地根目錄地址DocumentRoot"D:phpStudyPHPTutorialWWW"//根目錄<Directory />//根目錄配置Options +Indexes +FollowSymLinks +ExecCGIAllowOverride AllOrder allow,denyAllow from allRequire all granted</Directory><IfModule dir_module>DirectoryIndex index.html index.php index.htm l.php//站點目錄首頁文件</IfModule><Files ".ht*">//防止WEB用戶查看以.ht開頭的隱藏文件Require all denied</Files>ErrorLog "logs/error_log"//錯誤日志LogLevel error//錯誤日志等級<IfModule log_config_module>//錯誤日志配置LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combinedLogFormat "%h %l %u %t "%r" %>s %b" common<IfModule logio_module>LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" combinedio</IfModule></IfModule><IfModule alias_module>//別名設(shè)置#ScriptAlias /cgi-bin/ "H:/adsdv01/php/Apache/cgi-bin/"//CGI別名設(shè)置</IfModule><IfModule cgid_module></IfModule><IfModule mime_module>TypesConfig conf/mime.typesAddType Application/x-compress .ZAddType application/x-gzip .gz .tgz</IfModule>Include conf/extra/httpd-mpm.conf//引入文件Include conf/extra/httpd-php.confInclude conf/vhosts.conf//****引入vhosts虛擬機配置文件SSLSessionCache"shmcb:logs/ssl_scache(512000)"SSLSessionCacheTimeout300<IfModule ssl_module>//ssl證書配置SSLRandomSeed startup builtinSSLRandomSeed connect builtin</IfModule><IfModule setenvif_module>BrowserMatch "MSIE 10.0;" bad_DNT</IfModule><IfModule headers_module>RequestHeader unset DNT env=bad_DNT</IfModule>
```
3、vhosts.conf 虛擬機配置文件詳解
先直接上配置:
```
<VirtualHost _default_:80>默認localhost根目錄,監(jiān)聽80端口DocumentRoot "D:phpStudyPHPTutorialWWW"<Directory "D:phpStudyPHPTutorialWWW">Options -Indexes +FollowSymLinks +ExecCGIAllowOverride AllOrder allow,denyAllow from allRequire all granted</Directory></VirtualHost><VirtualHost *:80>DocumentRoot "D:phpStudyPHPTutorialWWW網(wǎng)站代碼根目錄"ServerName www.域名.comServerAlias 服務(wù)別名<Directory "D:phpStudyPHPTutorialWWW網(wǎng)站代碼根目錄">Options FollowSymLinks ExecCGIAllowOverride AllOrder allow,denyAllow from allRequire all granted</Directory></VirtualHost>
```
VirtualHost: 表示基于名稱的虛擬主機 *:80表示監(jiān)聽本機所有IP的80端口上提供HTTP服務(wù),*可以設(shè)置為具體IP
DocumentRoot: 網(wǎng)站代碼目錄
ServerName: 解析的域名地址
< Directory ></ Directory> 配置目錄權(quán)限
AllowOverride:禁止用戶對目錄配置文件.htaccess修改,一般為none
DirectoryIndex: 站點目錄首頁文件多個文件用空格隔開
Order和Allow: IP限制
Options:主要作用是控制特定目錄將啟用哪些服務(wù)器特性,參數(shù)有:All、None、FollowSymLinks、Indexes、MultiViews、SymLinksIfOwnerMatch、ExecCGI、Includes、IncludesNOEXEC。參數(shù)說明如下圖:
四、Nginx 及其簡單配置
4.1、Nginx定義
Nginx是lgor Sysoev為俄羅斯訪問量第二的rambler.ru站點設(shè)計開發(fā)的。從2004年發(fā)布至今,憑借開源的力量,已經(jīng)接近成熟與完善。
Nginx功能豐富,可作為HTTP服務(wù)器,也可作為反向代理服務(wù)器,郵件服務(wù)器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模塊擴展。
目前apache和nginx好像還沒有看到像IIS一樣的可視化配置。在windows和linux上,apache和nginx 都是以編輯配置文件的形式來配置。
4.2、nginx功能
1、反向代理
正向代理:某些情況下,代理我們用戶去訪問服務(wù)器,需要用戶手動的設(shè)置代理服務(wù)器的ip和端口號。
反向代理:是用來代理服務(wù)器的,代理我們要訪問的目標服務(wù)器。代理服務(wù)器接受請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)的服務(wù)器(集群化),并將從服務(wù)器上得到的結(jié)果返回給客戶端,此時代理服務(wù)器對外就表現(xiàn)為一個服務(wù)器。
2、負載均衡
多在高并發(fā)情況下需要使用。其原理就是將數(shù)據(jù)流量分攤到多個服務(wù)器執(zhí)行,減輕每臺服務(wù)器的壓力,多臺服務(wù)器(集群)共同完成工作任務(wù),從而提高了數(shù)據(jù)的吞吐量。
3、動靜分離
Nginx提供的動靜分離是指把動態(tài)請求和靜態(tài)請求分離開,合適的服務(wù)器處理相應的請求,使整個服務(wù)器系統(tǒng)的性能、效率更高。
4.3、nginx配置及其優(yōu)化
1、 目錄結(jié)構(gòu)
相對而言,nginx的目錄結(jié)構(gòu)比較簡單、松散。在
conf:文件夾包含了nginx的所有配置文件,在nginx安裝目錄下
log: 包含nginx的訪問日志和錯誤日志,可在配置中自定義
html: 網(wǎng)站根目錄地址,可在配置中自定義
sbin: nginx命令的目錄
proxy_temp,scgi_temp,uwsgi_temp,臨時目錄
2、nginx.conf 主配置文件詳解
```
user nginx nginx; #定義Nginx運行的用戶和用戶組worker_processes 1; #nginx進程數(shù),建議設(shè)置為等于CPU總核心數(shù)。events{use epoll; #參考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; worker_connections 65535; #單個進程最大連接數(shù)(最大連接數(shù)=連接數(shù)*進程數(shù))}error_log /var/log/nginx/error.log info; #全局錯誤日志定義類型,[ debug | info | notice | warn | error | crit ]pid /var/run/nginx.pid; #進程文件worker_rlimit_nofile 1024; #一個nginx進程打開的最多文件描述符數(shù)目,理論值應該是最多打開文件數(shù)(系統(tǒng)的值ulimit -n)與nginx進程數(shù)相除,但是nginx分配請求并不均勻,所以#建議與ulimit -n的值保持一致http {#HTTP區(qū)塊開始includemime.types;#Nginx支持的媒體類型庫文件default_typeapplication/octet-stream;#默認的媒體類型sendfileon;#開啟高效傳輸模式keepalive_timeout65;#連接超時server {#第一個Server區(qū)塊開始,表示一個獨立的虛擬主機站點listen80;#提供服務(wù)的端口,默認80server_namelocalhost;#提供服務(wù)的域名主機名location / {#第一個location區(qū)塊開始roothtml;#站點的根目錄,相當于Nginx的安裝目錄indexindex.html index.htm;#默認的首頁文件,多個用空格分開} error_page504/50x.html;#出現(xiàn)對應的http狀態(tài)碼時,使用50x.html回應客戶location = /50x.html {#location區(qū)塊開始,訪問50x.htmlroothtml; #指定對應的站點目錄為html}}include vhosts.conf;#虛擬機配置引用}
```
3、vhosts.conf 虛擬機配置文件詳解
```
server{listen 80; #監(jiān)聽端口server_name localhost; #提供服務(wù)的域名主機名indexindex.php index.html;#站點目錄首頁文件root"D:/phpStudy/PHPTutorial/WWW/網(wǎng)站代碼";#網(wǎng)站代碼根目錄#sslon;#ssl服務(wù)開啟#ssl_certificatecert.pem;#ssl證書#ssl_certificate_keycert.key;#ssl 證書keylocation / { #第一個location區(qū)塊開始root html; #站點的根目錄,相當于Nginx的安裝目錄index index.html index.htm index.jsp; #默認的首頁文件,多個用空格分開} #第一個location區(qū)塊結(jié)果#charset utf-8; #默認編碼server_names_hash_bucket_size 128; #服務(wù)器名字的hash表大小client_header_buffer_size 32k; #上傳文件大小限制large_client_header_buffers 4 64k; #設(shè)定請求緩client_max_body_size 8m; #設(shè)定請求緩sendfile on; #開啟高效文件傳輸模式,sendfile指令指定nginx是否調(diào)用sendfile函數(shù)來輸出文件,對于普通應用設(shè)為 on,如果用來進行下載等應用磁盤IO重負載應用,可設(shè)置為o #ff,以平衡磁盤與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的負載。注意:如果圖片顯示不正常把這個改成off。autoindex on; #開啟目錄列表訪問,合適下載服務(wù)器,默認關(guān)閉。tcp_nopush on; #防止網(wǎng)絡(luò)阻塞tcp_nodelay on; #防止網(wǎng)絡(luò)阻塞keepalive_timeout 120; #連接超時,單位是秒#FastCGI相關(guān)參數(shù)是為了改善網(wǎng)站的性能:減少資源占用,提高訪問速度。fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 128k;#gzip模塊設(shè)置gzip on; #開啟gzip壓縮輸出gzip_min_length 1k; #最小壓縮文件大小gzip_buffers 4 16k; #壓縮緩沖區(qū)gzip_http_version 1.0; #壓縮版本(默認1.1,前端如果是squid2.5請使用1.0)gzip_comp_level 2; #壓縮等級gzip_types text/x-JavaScript text/css application/xml; #壓縮類型,默認就已經(jīng)包含text/html,所以下面就不用再寫了,寫上去也不會有問題,但是會有一個warn。gzip_vary on;#limit_zone crawler $binary_remote_addr 10m; #開啟限制IP連接數(shù)的時候需要使用#圖片緩存時間設(shè)置location ~ .*.(gif|jpg|jpeg|png|bmp|swf)${expires 10d;}#JS和CSS緩存時間設(shè)置location ~ .*.(js|css)?${expires 1h;}#日志格式設(shè)定log_format access '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';access_log /var/log/nginx/access_$(data+%F -d -1day).log access; #定義本虛擬主機的訪問日志location / {#對 "/" 啟用反向代理proxy_pass http://127.0.0.1:88;proxy_redirect off;proxy_set_header X-Real-IP $remote_addr; #后端的Web服務(wù)器可以通過X-Forwarded-For獲取用戶真實IPproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#以下是一些反向代理的配置,可選proxy_set_header Host $host;client_max_body_size 10m; #允許客戶端請求的最大單文件字節(jié)數(shù)client_body_buffer_size 128k;#緩沖區(qū)代理緩沖用戶端請求的最大字節(jié)數(shù),proxy_connect_timeout 90; #nginx跟后端服務(wù)器連接超時時間(代理連接超時)proxy_send_timeout 90; #后端服務(wù)器數(shù)據(jù)回傳時間(代理發(fā)送超時)proxy_read_timeout 90; #連接成功后,后端服務(wù)器響應時間(代理接收超時)proxy_buffer_size 4k; #設(shè)置代理服務(wù)器(nginx)保存用戶頭信息的緩沖區(qū)大小proxy_buffers 4 32k; #proxy_buffers緩沖區(qū),網(wǎng)頁平均在32k以下的設(shè)置proxy_busy_buffers_size 64k; #高負荷下緩沖大小(proxy_buffers*2)proxy_temp_file_write_size 64k; #設(shè)定緩存文件夾大小,大于這個值,將從upstream服務(wù)器傳}#設(shè)定查看Nginx狀態(tài)的地址location /NginxStatus {stub_status on;access_log on;auth_basic "NginxStatus";auth_basic_user_file conf/htpasswd; #htpasswd文件的內(nèi)容可以用apache提供的htpasswd工具來產(chǎn)生。}#本地動靜分離反向代理配置#所有jsp的頁面均交由Tomcat或resin處理location ~ .(jsp|jspx|do)?$ {proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://127.0.0.1:8080;}#所有靜態(tài)文件由nginx直接讀取不經(jīng)過tomcat或resinlocation ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)${ expires 15d; }location ~ .*.(js|css)?${ expires 1h; }}}
```