1.什么是負(fù)載均衡渠退?
通過(guò)某種負(fù)載分擔(dān)技術(shù)庇忌,將外部發(fā)送來(lái)的請(qǐng)求按照某種策略分配到服務(wù)器集合的某一臺(tái)服務(wù)器上睛挚,而接收到請(qǐng)求的服務(wù)器獨(dú)立地回應(yīng)客戶的請(qǐng)求磨镶。負(fù)載均衡解決了大量并發(fā)訪問(wèn)服務(wù)問(wèn)題溃蔫,其目的就是用最少的投資獲得接近于大型主機(jī)的性能。
2.Nginx的使用場(chǎng)景
1琳猫、http服務(wù)器伟叛。Nginx是一個(gè)http服務(wù)可以獨(dú)立提供http服務(wù)∑晟可以做網(wǎng)頁(yè)靜態(tài)服務(wù)器统刮。
2紊遵、虛擬主機(jī)〗拿桑可以實(shí)現(xiàn)在一臺(tái)服務(wù)器虛擬出多個(gè)網(wǎng)站暗膜。例如個(gè)人網(wǎng)站使用的虛擬主機(jī)。
3辉哥、反向代理桦山,負(fù)載均衡。當(dāng)網(wǎng)站的訪問(wèn)量達(dá)到一定程度后醋旦,單臺(tái)服務(wù)器不能滿足用戶的請(qǐng)求時(shí)恒水,需要用多臺(tái)服務(wù)器集群可以使用nginx做反向代理。并且多臺(tái)服務(wù)器可以平均分擔(dān)負(fù)載饲齐,不會(huì)因?yàn)槟撑_(tái)服務(wù)器負(fù)載高宕機(jī)而某臺(tái)服務(wù)器閑置的情況钉凌。
3.下載地址
http://nginx.org/en/download.html
4.通過(guò)ip可以實(shí)現(xiàn)虛擬主機(jī)的配置,nginx支持三種類(lèi)型的虛擬主機(jī)的配置捂人∮瘢基于ip的虛擬主機(jī)的配置,基于域名的虛擬主機(jī)滥搭,基于端口的虛擬主機(jī)酸纲。
5.基于域名的虛擬主機(jī)的配置:
兩個(gè)域名指向同一臺(tái)nginx服務(wù)器,用戶訪問(wèn)不同的域名顯示不同的網(wǎng)頁(yè)內(nèi)容瑟匆。
兩個(gè)域名是aaa.test.com和bbb.test.com
nginx服務(wù)器使用虛擬機(jī)192.168.101.3
(1)通過(guò)host文件指定aaa.test.com和bbb.test.com對(duì)應(yīng)192.168.101.3虛擬機(jī):
修改window的hosts文件:(C:\Windows\System32\drivers\etc)
192.168.101.3 aaa.test.com
192.168.101.3 bbb.test.com
6.虛擬主機(jī)的配置:
修改/usr/local/nginx/conf/nginx.conf文件闽坡,添加兩個(gè)虛擬主機(jī),如下:
配置虛擬主機(jī)aaa.test.com
server {
#監(jiān)聽(tīng)的ip和端口愁溜,配置本機(jī)ip和端口
listen 192.168.101.3:80;
#虛擬主機(jī)名稱(chēng)是aaa.test.com疾嗅,請(qǐng)求域名aaa.test.com的url將由此server配置解析
server_name aaa.test.com;
#所有的請(qǐng)求都以/開(kāi)始,所有的請(qǐng)求都可以匹配此location
location / {
#使用root指令指定虛擬主機(jī)目錄即網(wǎng)頁(yè)存放目錄
#比如訪問(wèn)http://ip/test.html將找到/usr/local/aaa_html/test.html
#比如訪問(wèn)http://ip/item/test.html將找到/usr/local/aaa_html/item/test.html
root /usr/local/aaa_html;
#指定歡迎頁(yè)面冕象,按從左到右順序查找
index index.html index.htm;
}
}
7.訪問(wèn): aaa.test.com代承、bbb.test.com
8.基于端口的虛擬主機(jī)
需求:nginx對(duì)外提供80和8080兩個(gè)端口監(jiān)聽(tīng)服務(wù)。
請(qǐng)求80端口則請(qǐng)求html80目錄下的html
請(qǐng)求8080端口則請(qǐng)求html8080目錄下的html
配置虛擬主機(jī):
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#配置虛擬主機(jī)
server {
#監(jiān)聽(tīng)的ip和端口渐扮,配置80
listen 80;
#虛擬主機(jī)名稱(chēng)這里配置ip地址
server_name 192.168.101.3;
#所有的請(qǐng)求都以/開(kāi)始论悴,所有的請(qǐng)求都可以匹配此location
location / {
#使用root指令指定虛擬主機(jī)目錄即網(wǎng)頁(yè)存放目錄
#比如訪問(wèn)http://ip/test.html將找到/usr/local/html3/test.html
#比如訪問(wèn)http://ip/item/test.html將找到/usr/local/html3/item/test.html
root /usr/local/nginx/html80;
#指定歡迎頁(yè)面,按從左到右順序查找
index index.html index.htm;
}
}
#配置虛擬主機(jī)
server {
listen 8080;
server_name 192.168.101.3;
location / {
root /usr/local/nginx/html8080;
index index.html index.htm;
}
}
}
9.訪問(wèn):訪問(wèn)http://192.168.101.3:8080
- 什么是方向代理
通常的代理服務(wù)器墓律,只用于代理內(nèi)部網(wǎng)絡(luò)對(duì)Internet的連接請(qǐng)求意荤,客戶機(jī)必須指定代理服務(wù)器,并將本來(lái)要直接發(fā)送到Web服務(wù)器上的http請(qǐng)求發(fā)送到代理服務(wù)器中由代理服務(wù)器向Internet上的web服務(wù)器發(fā)起請(qǐng)求,最終達(dá)到客戶機(jī)上網(wǎng)的目的只锻。
而反向代理(Reverse Proxy)方式是指以代理服務(wù)器來(lái)接受internet上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器紫谷,并將從服務(wù)器上得到的結(jié)果返回給internet上請(qǐng)求連接的客戶端齐饮,此時(shí)代理服務(wù)器對(duì)外就表現(xiàn)為一個(gè)反向代理服務(wù)器捐寥。
11.Nginx反向代理的配置:
根據(jù)上邊的需求在nginx.conf文件中配置反向代理,如下:
配置一個(gè)代理即tomcat1服務(wù)器
upstream tomcat_server1 {
server 192.168.101.5:8080;
}
配置一個(gè)代理即tomcat2服務(wù)器
upstream tomcat_server2 {
server 192.168.101.6:8080;
}
配置一個(gè)虛擬主機(jī)
server {
listen 80;
server_name aaa.test.com;
location / {
#域名aaa.test.com的請(qǐng)求全部轉(zhuǎn)發(fā)到tomcat_server1即tomcat1服務(wù)上
proxy_pass http://tomcat_server1;
#歡迎頁(yè)面祖驱,按照從左到右的順序查找頁(yè)面
index index.jsp index.html index.htm;
}
}
server {
listen 80;
server_name bbb.test.com;
location / {
#域名bbb.test.com的請(qǐng)求全部轉(zhuǎn)發(fā)到tomcat_server2即tomcat2服務(wù)上
proxy_pass http://tomcat_server2;
index index.jsp index.html index.htm;
}
}
12.什么是負(fù)載均衡握恳?
負(fù)載均衡 建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,它提供了一種廉價(jià)有效透明的方法擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬捺僻、增加吞吐量乡洼、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性匕坯。
13.負(fù)載均衡配置:
根據(jù)上邊的需求在nginx.conf文件中配置負(fù)載均衡束昵,如下:
upstream tomcat_server_pool{
server 192.168.101.5:8080 weight=10;
server 192.168.101.6:8080 weight=10;
}
server {
listen 80;
server_name aaa.test.com;
location / {
proxy_pass http://tomcat_server_pool;
index index.jsp index.html index.htm;
}
}
13.Nginx的編譯參數(shù):
--prefix= 指向安裝目錄
--sbin-path 指向(執(zhí)行)程序文件(nginx)
--conf-path= 指向配置文件(nginx.conf)
--error-log-path= 指向錯(cuò)誤日志目錄
--pid-path= 指向pid文件(nginx.pid)
--lock-path= 指向lock文件(nginx.lock)(安裝文件鎖定,防止安裝文件被別人利用葛峻,或自己誤操作锹雏。)
--user= 指定程序運(yùn)行時(shí)的非特權(quán)用戶
--group= 指定程序運(yùn)行時(shí)的非特權(quán)用戶組
--builddir= 指向編譯目錄
--with-rtsig_module 啟用rtsig模塊支持(實(shí)時(shí)信號(hào))
--with-select_module 啟用select模塊支持(一種輪詢模式,不推薦在高載環(huán)境下使用)禁用:--without-select_module
--with-poll_module 啟用poll模塊支持(功能與select相同,與select特性相同术奖,為一種輪詢模式,不推薦在高載環(huán)境下使用)
--with-file-aio 啟用file aio支持(一種APL文件傳輸格式)
--with-ipv6 啟用ipv6支持
--with-http_ssl_module 啟用ngx_http_ssl_module支持(使支持https請(qǐng)求礁遵,需已安裝openssl)
--with-http_realip_module 啟用ngx_http_realip_module支持(這個(gè)模塊允許從請(qǐng)求標(biāo)頭更改客戶端的IP地址值,默認(rèn)為關(guān))
--with-http_addition_module 啟用ngx_http_addition_module支持(作為一個(gè)輸出過(guò)濾器采记,支持不完全緩沖佣耐,分部分響應(yīng)請(qǐng)求)
--with-http_xslt_module 啟用ngx_http_xslt_module支持(過(guò)濾轉(zhuǎn)換XML請(qǐng)求)
--with-http_image_filter_module 啟用ngx_http_image_filter_module支持(傳輸JPEG/GIF/PNG 圖片的一個(gè)過(guò)濾器)(默認(rèn)為不啟用。gd庫(kù)要用到)
--with-http_geoip_module 啟用ngx_http_geoip_module支持(該模塊創(chuàng)建基于與MaxMind GeoIP二進(jìn)制文件相配的客戶端IP地址的ngx_http_geoip_module變量)
--with-http_sub_module 啟用ngx_http_sub_module支持(允許用一些其他文本替換nginx響應(yīng)中的一些文本)
--with-http_dav_module 啟用ngx_http_dav_module支持(增加PUT,DELETE,MKCOL:創(chuàng)建集合,COPY和MOVE方法)默認(rèn)情況下為關(guān)閉唧龄,需編譯開(kāi)啟
--with-http_flv_module 啟用ngx_http_flv_module支持(提供尋求內(nèi)存使用基于時(shí)間的偏移量文件)
--with-http_gzip_static_module 啟用ngx_http_gzip_static_module支持(在線實(shí)時(shí)壓縮輸出數(shù)據(jù)流)
--with-http_random_index_module 啟用ngx_http_random_index_module支持(從目錄中隨機(jī)挑選一個(gè)目錄索引)
--with-http_secure_link_module 啟用ngx_http_secure_link_module支持(計(jì)算和檢查要求所需的安全鏈接網(wǎng)址)
--with-http_degradation_module 啟用ngx_http_degradation_module支持(允許在內(nèi)存不足的情況下返回204或444碼)
--with-http_stub_status_module 啟用ngx_http_stub_status_module支持(獲取nginx自上次啟動(dòng)以來(lái)的工作狀態(tài))
--without-http_charset_module 禁用ngx_http_charset_module支持(重新編碼web頁(yè)面兼砖,但只能是一個(gè)方向--服務(wù)器端到客戶端,并且只有一個(gè)字節(jié)的編碼可以被重新編碼)
--without-http_gzip_module 禁用ngx_http_gzip_module支持(該模塊同-with-http_gzip_static_module功能一樣)
--without-http_ssi_module 禁用ngx_http_ssi_module支持(該模塊提供了一個(gè)在輸入端處理處理服務(wù)器包含文件(SSI)的過(guò)濾器选侨,目前支持SSI命令的列表是不完整的)
--without-http_userid_module 禁用ngx_http_userid_module支持(該模塊用來(lái)處理用來(lái)確定客戶端后續(xù)請(qǐng)求的cookies)
--without-http_access_module 禁用ngx_http_access_module支持(該模塊提供了一個(gè)簡(jiǎn)單的基于主機(jī)的訪問(wèn)控制掖鱼。允許/拒絕基于ip地址)
--without-http_auth_basic_module禁用ngx_http_auth_basic_module(該模塊是可以使用用戶名和密碼基于http基本認(rèn)證方法來(lái)保護(hù)你的站點(diǎn)或其部分內(nèi)容)
--without-http_autoindex_module 禁用disable ngx_http_autoindex_module支持(該模塊用于自動(dòng)生成目錄列表,只在ngx_http_index_module模塊未找到索引文件時(shí)發(fā)出請(qǐng)求援制。)
--without-http_geo_module 禁用ngx_http_geo_module支持(創(chuàng)建一些變量戏挡,其值依賴(lài)于客戶端的IP地址)
--without-http_map_module 禁用ngx_http_map_module支持(使用任意的鍵/值對(duì)設(shè)置配置變量)
--without-http_split_clients_module 禁用ngx_http_split_clients_module支持(該模塊用來(lái)基于某些條件劃分用戶。條件如:ip地址晨仑、報(bào)頭褐墅、cookies等等)
--without-http_referer_module 禁用disable ngx_http_referer_module支持(該模塊用來(lái)過(guò)濾請(qǐng)求,拒絕報(bào)頭中Referer值不正確的請(qǐng)求)
--without-http_rewrite_module 禁用ngx_http_rewrite_module支持(該模塊允許使用正則表達(dá)式改變URI洪己,并且根據(jù)變量來(lái)轉(zhuǎn)向以及選擇配置妥凳。如果在server級(jí)別設(shè)置該選項(xiàng),那么他們將在 location之前生效答捕。如果在location還有更進(jìn)一步的重寫(xiě)規(guī)則逝钥,location部分的規(guī)則依然會(huì)被執(zhí)行。如果這個(gè)URI重寫(xiě)是因?yàn)閘ocation部分的規(guī)則造成的拱镐,那么 location部分會(huì)再次被執(zhí)行作為新的URI艘款。 這個(gè)循環(huán)會(huì)執(zhí)行10次持际,然后Nginx會(huì)返回一個(gè)500錯(cuò)誤。)
--without-http_proxy_module 禁用ngx_http_proxy_module支持(有關(guān)代理服務(wù)器)
--without-http_fastcgi_module 禁用ngx_http_fastcgi_module支持(該模塊允許Nginx 與FastCGI 進(jìn)程交互哗咆,并通過(guò)傳遞參數(shù)來(lái)控制FastCGI 進(jìn)程工作蜘欲。 )FastCGI一個(gè)常駐型的公共網(wǎng)關(guān)接口。
--without-http_uwsgi_module 禁用ngx_http_uwsgi_module支持(該模塊用來(lái)醫(yī)用uwsgi協(xié)議晌柬,uWSGI服務(wù)器相關(guān))
--without-http_scgi_module 禁用ngx_http_scgi_module支持(該模塊用來(lái)啟用SCGI協(xié)議支持姥份,SCGI協(xié)議是CGI協(xié)議的替代。它是一種應(yīng)用程序與HTTP服務(wù)接口標(biāo)準(zhǔn)年碘。它有些像FastCGI但他的設(shè)計(jì)更容易實(shí)現(xiàn)澈歉。)
--without-http_memcached_module 禁用ngx_http_memcached_module支持(該模塊用來(lái)提供簡(jiǎn)單的緩存,以提高系統(tǒng)效率)
-without-http_limit_zone_module 禁用ngx_http_limit_zone_module支持(該模塊可以針對(duì)條件盛泡,進(jìn)行會(huì)話的并發(fā)連接數(shù)控制)
--without-http_limit_req_module 禁用ngx_http_limit_req_module支持(該模塊允許你對(duì)于一個(gè)地址進(jìn)行請(qǐng)求數(shù)量的限制用一個(gè)給定的session或一個(gè)特定的事件)
--without-http_empty_gif_module 禁用ngx_http_empty_gif_module支持(該模塊在內(nèi)存中常駐了一個(gè)1*1的透明GIF圖像闷祥,可以被非常快速的調(diào)用)
--without-http_browser_module 禁用ngx_http_browser_module支持(該模塊用來(lái)創(chuàng)建依賴(lài)于請(qǐng)求報(bào)頭的值傲诵。如果瀏覽器為modern 凯砍,則$modern_browser等于modern_browser_value指令分配的值;如果瀏覽器為old拴竹,則$ancient_browser等于 ancient_browser_value指令分配的值悟衩;如果瀏覽器為 MSIE中的任意版本,則 $msie等于1)
--without-http_upstream_ip_hash_module 禁用ngx_http_upstream_ip_hash_module支持(該模塊用于簡(jiǎn)單的負(fù)載均衡)
--with-http_perl_module 啟用ngx_http_perl_module支持(該模塊使nginx可以直接使用perl或通過(guò)ssi調(diào)用perl)
--with-perl_modules_path= 設(shè)定perl模塊路徑
--with-perl= 設(shè)定perl庫(kù)文件路徑
--http-log-path= 設(shè)定access log路徑
--http-client-body-temp-path= 設(shè)定http客戶端請(qǐng)求臨時(shí)文件路徑
--http-proxy-temp-path= 設(shè)定http代理臨時(shí)文件路徑
--http-fastcgi-temp-path= 設(shè)定http fastcgi臨時(shí)文件路徑
--http-uwsgi-temp-path= 設(shè)定http uwsgi臨時(shí)文件路徑
--http-scgi-temp-path= 設(shè)定http scgi臨時(shí)文件路徑
-without-http 禁用http server功能
--without-http-cache 禁用http cache功能
--with-mail 啟用POP3/IMAP4/SMTP代理模塊支持
--with-mail_ssl_module 啟用ngx_mail_ssl_module支持
--without-mail_pop3_module 禁用pop3協(xié)議(POP3即郵局協(xié)議的第3個(gè)版本,它是規(guī)定個(gè)人計(jì)算機(jī)如何連接到互聯(lián)網(wǎng)上的郵件服務(wù)器進(jìn)行收發(fā)郵件的協(xié)議栓拜。是因特網(wǎng)電子郵件的第一個(gè)離線協(xié)議標(biāo)準(zhǔn),POP3協(xié)議允許用戶從服務(wù)器上把郵件存儲(chǔ)到本地主機(jī)上,同時(shí)根據(jù)客戶端的操作刪除或保存在郵件服務(wù)器上的郵件座泳。POP3協(xié)議是TCP/IP協(xié)議族中的一員,主要用于支持使用客戶端遠(yuǎn)程管理在服務(wù)器上的電子郵件)
--without-mail_imap_module 禁用imap協(xié)議(一種郵件獲取協(xié)議幕与。它的主要作用是郵件客戶端可以通過(guò)這種協(xié)議從郵件服務(wù)器上獲取郵件的信息挑势,下載郵件等。IMAP協(xié)議運(yùn)行在TCP/IP協(xié)議之上啦鸣,使用的端口是143潮饱。它與POP3協(xié)議的主要區(qū)別是用戶可以不用把所有的郵件全部下載,可以通過(guò)客戶端直接對(duì)服務(wù)器上的郵件進(jìn)行操作诫给。)
--without-mail_smtp_module 禁用smtp協(xié)議(SMTP即簡(jiǎn)單郵件傳輸協(xié)議,它是一組用于由源地址到目的地址傳送郵件的規(guī)則香拉,由它來(lái)控制信件的中轉(zhuǎn)方式。SMTP協(xié)議屬于TCP/IP協(xié)議族中狂,它幫助每臺(tái)計(jì)算機(jī)在發(fā)送或中轉(zhuǎn)信件時(shí)找到下一個(gè)目的地凫碌。)
--with-google_perftools_module 啟用ngx_google_perftools_module支持(調(diào)試用,剖析程序性能瓶頸)
--with-cpp_test_module 啟用ngx_cpp_test_module支持
--add-module= 啟用外部模塊支持
--with-cc= 指向C編譯器路徑
--with-cpp= 指向C預(yù)處理路徑
--with-cc-opt= 設(shè)置C編譯器參數(shù)(PCRE庫(kù)胃榕,需要指定–with-cc-opt=”-I /usr/local/include”盛险,如果使用select()函數(shù)則需要同時(shí)增加文件描述符數(shù)量,可以通過(guò)–with-cc- opt=”-D FD_SETSIZE=2048”指定。)
--with-ld-opt= 設(shè)置連接文件參數(shù)枉层。(PCRE庫(kù)泉褐,需要指定–with-ld-opt=”-L /usr/local/lib”。)
--with-cpu-opt= 指定編譯的CPU鸟蜡,可用的值為: pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64
--without-pcre 禁用pcre庫(kù)
--with-pcre 啟用pcre庫(kù)
--with-pcre= 指向pcre庫(kù)文件目錄
--with-pcre-opt= 在編譯時(shí)為pcre庫(kù)設(shè)置附加參數(shù)
--with-md5= 指向md5庫(kù)文件目錄(消息摘要算法第五版,用以提供消息的完整性保護(hù))
--with-md5-opt= 在編譯時(shí)為md5庫(kù)設(shè)置附加參數(shù)
--with-md5-asm 使用md5匯編源
--with-sha1= 指向sha1庫(kù)目錄(數(shù)字簽名算法挺邀,主要用于數(shù)字簽名)
--with-sha1-opt= 在編譯時(shí)為sha1庫(kù)設(shè)置附加參數(shù)
--with-sha1-asm 使用sha1匯編源
--with-zlib= 指向zlib庫(kù)目錄
--with-zlib-opt= 在編譯時(shí)為zlib設(shè)置附加參數(shù)
--with-zlib-asm= 為指定的CPU使用zlib匯編源進(jìn)行優(yōu)化揉忘,CPU類(lèi)型為pentium, pentiumpro
--with-libatomic 為原子內(nèi)存的更新操作的實(shí)現(xiàn)提供一個(gè)架構(gòu)
--with-libatomic= 指向libatomic_ops安裝目錄
--with-openssl= 指向openssl安裝目錄
--with-openssl-opt 在編譯時(shí)為openssl設(shè)置附加參數(shù)
--with-debug 啟用debug日志