日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Nginx的正向代理和反向代理以及負(fù)載均衡和動(dòng)靜分離

 看見就非常 2020-05-08

Nginx的正向代理和反向代理

Nginx服務(wù)的一個(gè)重要功能——代理服務(wù)。在這里我們還得搞懂代理服務(wù)中正向代理和反向代理的區(qū)別,以及怎么使用他們,下面會(huì)進(jìn)行講解。

正向代理簡(jiǎn)介

正向代理,意思是一個(gè)位于客戶端和原始服務(wù)器(origin server)之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容,客戶端向代理發(fā)送一個(gè)請(qǐng)求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請(qǐng)求并將獲得的內(nèi)容返回給客戶端??蛻舳瞬拍苁褂谜虼?。

反向代理簡(jiǎn)介

反向代理服務(wù)器位于用戶與目標(biāo)服務(wù)器之間,但是對(duì)于用戶而言,反向代理服務(wù)器就相當(dāng)于目標(biāo)服務(wù)器,即用戶直接訪問反向代理服務(wù)器就可以獲得目標(biāo)服務(wù)器的資源。同時(shí),用戶不需要知道目標(biāo)服務(wù)器的地址,也無(wú)須在用戶端作任何設(shè)定。反向代理服務(wù)器通??捎脕?lái)作為Web加速,即使用反向代理作為Web服務(wù)器的前置機(jī)來(lái)降低網(wǎng)絡(luò)和服務(wù)器的負(fù)載,提高訪問效率。

正向代理的使用
指令作用
resolveraddress [valid=time]用于指定DNS服務(wù)器的IP地址。address=DNS服務(wù)器的IP地址(支持IPv6地址),time=設(shè)置數(shù)據(jù)包在網(wǎng)絡(luò)中的有效時(shí)間,如:resolver 8.8.8.8 114.114.114.114 valid=30s;
resolver_timeouttime用于設(shè)置DNS服務(wù)器域名解析超時(shí)時(shí)間,time=超時(shí)時(shí)間
proxy_passURL用于設(shè)置代理服務(wù)器的協(xié)議和地址,URL=代理服務(wù)器的協(xié)議和地址,如:proxy_pass http://$http_host$request_uri; 其中$http_host和$request_uri為Nginx內(nèi)置變量

實(shí)例

vim /usr/local/nginx/conf/nginx.conf
添加:
server
{
	resolver 8.8.8.8;
	listen 81;
	location /
	{
		proxy_pass http://$http_host$request_uri;
	}
}
解釋:
#設(shè)置DNS服務(wù)器地址為8.8.8.8,使用默認(rèn)的53端口作為DNS服務(wù)器的端口,代理服務(wù)的監(jiān)聽端口為81,Nginx接收到的所有請(qǐng)求都由location模塊處理

注意:Nginx正向代理不支持代理HTTPS協(xié)議的站點(diǎn),不要在正向代理的server塊中出現(xiàn)server_name指令。

反向代理的使用
指令作用
proxy_passURL設(shè)置被代理服務(wù)器的地址,可以是主機(jī)名稱、IP地址加端口號(hào)和UNIX-domain套接字形式。如:proxy_pass http://www.baidu.com/abc/、proxy_pass http://192.168.1.108:8080/abc/、proxy_pass http://unix:/tmp/abc.socket:/abc/。proxy_pass和upstream搭配使用時(shí),看upstream中的server有沒有帶協(xié)議地址,沒有就在proxy_pass中帶,如:proxy_pass http://upstream_abc;
proxy_hide_headerfield設(shè)置Nginx服務(wù)器在發(fā)送HTTP響應(yīng)時(shí),隱藏一些頭部信息。field=需要隱藏的頭部信息。
proxy_pass_headerfield默認(rèn)情況下Nginx在發(fā)送響應(yīng)報(bào)文時(shí),報(bào)文頭中不包含“Date”、“Server”、“X-Accel”等來(lái)自代理服務(wù)器的頭部信息。該指令可以設(shè)置這些頭部信息已被發(fā)送。field=需要發(fā)送的頭部。
proxy_pass_request_bodyon | off是否將客戶端請(qǐng)求的請(qǐng)求體發(fā)送給代理服務(wù)器。默認(rèn)值為on(開啟)。
proxy_pass_request_headerson | off是否將客戶端請(qǐng)求的請(qǐng)求頭發(fā)送給代理服務(wù)器。默認(rèn)值為on(開啟)。
proxy_set_headerfield value可以更改Nginx服務(wù)器接收到的客戶端請(qǐng)求的請(qǐng)求頭信息,然后將新的請(qǐng)求頭發(fā)送給被代理服務(wù)器。field=要更改的信息所在的頭域。value=更改的值,支持使用文本、變量或者變量的組合。
proxy_set_bodyvalue可以更改Nginx服務(wù)器接收到的客戶端請(qǐng)求的請(qǐng)求體信息,然后將新的請(qǐng)求體發(fā)送給被代理服務(wù)器。value=為更改的信息,支持使用文本、變量或者變量的組合。
proxy_bindaddress強(qiáng)制將與代理主機(jī)的連接綁定到指定的IP地址。address=指定主機(jī)的IP地址。
proxy_connect_timeouttime設(shè)置Nginx服務(wù)器與后端被代理服務(wù)器嘗試建立連接的超時(shí)時(shí)間。time=超時(shí)時(shí)間,默認(rèn)為60s。
proxy_read_timeouttime配置Nginx服務(wù)器向后端被代理服務(wù)器發(fā)出read請(qǐng)求后,等待響應(yīng)的超時(shí)時(shí)間。time=超時(shí)時(shí)間,默認(rèn)為60s。
proxy_send_timeouttime配置Nginx服務(wù)器向后端被代理服務(wù)器發(fā)出write請(qǐng)求后,等待響應(yīng)的超時(shí)時(shí)間。time=超時(shí)時(shí)間,默認(rèn)為60s。
proxy_http_version1.0 | 1.1設(shè)置Nginx服務(wù)器提供代理服務(wù)的HTTP協(xié)議版本。默認(rèn)設(shè)置為1.0版本。1.1版本支持upstream服務(wù)器組設(shè)置中的keepalive指令。
proxy_methodmethod設(shè)置Nginx服務(wù)器請(qǐng)求被代理服務(wù)器時(shí)使用的請(qǐng)求方法。method=可以設(shè)置為POST或者GET。
proxy_ignore_client_aborton | off設(shè)置在客戶端中斷網(wǎng)絡(luò)請(qǐng)求時(shí),Nginx服務(wù)器是否中斷對(duì)被代理服務(wù)器的請(qǐng)求。默認(rèn)值為off,當(dāng)客戶端中斷網(wǎng)絡(luò)請(qǐng)求時(shí),Nginx服務(wù)器中斷對(duì)被代理服務(wù)器的請(qǐng)求。
proxy_ignore_headersfield設(shè)置一些HTTP響應(yīng)頭中的頭域,Nginx服務(wù)器接收到被代理服務(wù)器的響應(yīng)數(shù)據(jù)后,不會(huì)處理被設(shè)置的頭域。field=要設(shè)置的HTTP響應(yīng)頭的頭域。
proxy_redirectredirect replacement | default | off用于修改被代理服務(wù)器返回的響應(yīng)頭中的Location頭域和Refresh頭域。redirect=匹配Location頭域值的字符串,支持變量和正則表達(dá)式,replacement=用于替換redirect變量?jī)?nèi)容的字符串,支持變量的使用,default=代表使用location塊的uri變量作為replacement,并使用proxy_pass變量做為redirect,off=將當(dāng)前域下所有的proxy_redirect指令配置全部設(shè)置無(wú)效。
proxy_intercept_errorson | off配置一個(gè)狀態(tài)是開啟還是關(guān)閉。開啟狀態(tài)時(shí),如果被代理的服務(wù)器返回的HTTP狀態(tài)代碼為400或者大于400,則Nginx服務(wù)器使用自定義的錯(cuò)誤頁(yè)(使用error_page指令)。如果是關(guān)閉狀態(tài),Nginx服務(wù)器直接將被代理服務(wù)器返回的HTTP狀態(tài)返回給客戶端。
proxy_headers_hash_max_sizesize存放HTTP報(bào)文頭的hash表的容量。size=HTTP報(bào)文頭hash表的容量上限,默認(rèn)為512字符。proxy_headers_hash_max_size 512;
proxy_headers_hash_bucket_sizesize申請(qǐng)存放HTTP報(bào)文頭部的hash表容量的單位大小。size=設(shè)置的容量,默認(rèn)為64字符。
proxy_next_upstreamstatus在配置Nginx反向代理功能時(shí),如果使用upstream指令配置了一組服務(wù)器作為被代理服務(wù)器,服務(wù)器組中各服務(wù)器的訪問規(guī)則遵循upstream指令配置的輪詢規(guī)則,同時(shí)可以使用該指令配置在發(fā)生異常情況時(shí),將請(qǐng)求順次交由下一個(gè)組內(nèi)服務(wù)器處理。status=為設(shè)置的服務(wù)器返回狀態(tài),可以是一個(gè)或者多個(gè),這些狀態(tài)有error(在建立連接、向被代理的服務(wù)器發(fā)送請(qǐng)求或者讀取響應(yīng)頭時(shí)服務(wù)器發(fā)生連接錯(cuò)誤)、timeout(在建立連接、向被代理的服務(wù)器發(fā)送請(qǐng)求或者讀取響應(yīng)頭時(shí)服務(wù)器發(fā)生連接超時(shí))、invalid_header(被代理服務(wù)器返回的響應(yīng)頭為空或者無(wú)效)、http_500|http_502|http_503|http_504|http_404(被代理服務(wù)器返回500、502、503、504、404狀態(tài)代碼)、off(無(wú)法將請(qǐng)求發(fā)送給被代理服務(wù)器)
proxy_ssl_session_reuseon | off是否使用基于SSL安全協(xié)議的會(huì)話連接(“https://”)被代理的服務(wù)器

注意:反向代理一般都是跟負(fù)載均衡一起使用。

實(shí)例

vim /usr/local/nginx/conf/nginx.conf
添加:
...	#其他配置
upstream backend{
	server 192.168.1.108;
	server 192.168.1.109;
}
server
{
	... #其他配置
	location / {
		proxy_pass http://backend;
		proxy_set_header Host $host;
		proxy_set X-Real-IP $remote_addr;
		proxy_set X-Forwarded-For $proxy_add_x_forwarded_for;
	}
}
負(fù)載均衡使用

文章最下面介紹了upstream的server指令。
Nginx常見負(fù)載均衡算法和第三方負(fù)載均衡算法

動(dòng)靜分離

動(dòng)靜分離其實(shí)很簡(jiǎn)單,就是靜態(tài)文件交給Nginx(這里擔(dān)任了單獨(dú)處理靜態(tài)文件的WEB服務(wù)器)處理,動(dòng)態(tài)的資源就交給后端的服務(wù)器,比如(Tomcat、Nginx、Apache)。

vim /usr/local/nginx/conf/nginx.conf
添加:
...	#其他配置
server
{
	...	#其他配置
	#動(dòng)態(tài)資源交給后端處理
	location ~.*\.(jsp|php)$ {	#文件格式可以自己添加
    	proxy_pass http://192.168.1.109;
	}
	#靜態(tài)資源本臺(tái)Nginx進(jìn)行處理
	location ~.*\.(html|js|css|gif|jpg|jpeg|png)$ {	#文件格式可以自己添加
    	root html;
    	index index.html index.htm;
    	#expired 10d;	#如果想要靜態(tài)文件緩存的話就用此命令,緩存時(shí)間為10天

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多