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