在工作中谎仲,一般測(cè)試環(huán)境借杰,預(yù)發(fā)環(huán)境,正式環(huán)境都有部署Nginx服務(wù)器蝇恶。有時(shí)候我們需要對(duì)Nginx服務(wù)器的配置項(xiàng)加一些參數(shù)撵儿。比如新的映射地址之類(lèi)的乘客。但是發(fā)現(xiàn)一旦涉及到Nginx的話,很多同事都是一臉懵逼淀歇。反向代理也不是很清楚易核。
要了解Nginx首先需要了解什么是正向代理,什么事反向代理浪默。
正向代理
是指客戶(hù)端與目標(biāo)服務(wù)器之間增加一個(gè)代理服務(wù)器牡直,客戶(hù)端直接訪問(wèn)代理服務(wù)器,在由代理服務(wù)器訪問(wèn)目標(biāo)服務(wù)器并返回客戶(hù)端并返回 纳决。這個(gè)過(guò)程當(dāng)中客戶(hù)端需要知道代理服務(wù)器地址碰逸,并配置連接。
簡(jiǎn)單來(lái)說(shuō)阔加,就是你想看Youtube饵史。但是沒(méi)法上去咋辦,就掛一個(gè)vnp胜榔,然后再連YouTube胳喷。這個(gè)就是正向代理∝仓客戶(hù)端是感知的吭露,知道自己是先連vpn再連Youtube
反向代理
是指客戶(hù)端訪問(wèn)目標(biāo)服務(wù)器,在目標(biāo)服務(wù)內(nèi)部有一個(gè)統(tǒng)一接入網(wǎng)關(guān)將請(qǐng)求轉(zhuǎn)發(fā)至后端真正處理的服務(wù)器并返回結(jié)果尊惰。這個(gè)過(guò)程當(dāng)中客戶(hù)端不需要知道代理服務(wù)器地址奴饮,代理對(duì)客戶(hù)端而言是透明的纬向。
簡(jiǎn)單來(lái)說(shuō)就是你請(qǐng)求YouTube择浊。他有多臺(tái)服務(wù)器戴卜,但是統(tǒng)一暴露的地址就是YouTube,你請(qǐng)求這個(gè)地址琢岩,服務(wù)器內(nèi)部進(jìn)行分發(fā)投剥。請(qǐng)求的具體的服務(wù)器的ip你是不知道的。
Nginx的話就是實(shí)現(xiàn)了反向代理担孔。外來(lái)的請(qǐng)求統(tǒng)一請(qǐng)求到Nginx上江锨,由Nginx來(lái)進(jìn)行分發(fā)。分發(fā)的話糕篇,就會(huì)涉及到負(fù)載均衡啄育。
Nginx的配置統(tǒng)一在nginx.conf中配置。如果你公司有哪個(gè)環(huán)境配置了nginx拌消,可以上去看一下nginx的這個(gè)文件里面配置的內(nèi)容挑豌。
ps -ef |grep nginx 就可以看到啟動(dòng)nginx的這個(gè)配置文件的具體地址了。
代理的配置是如下這段
location /index/ {
proxy_pass localhost:8080
}
請(qǐng)求這個(gè)地址墩崩,代理到本機(jī)的localhost:8080端口氓英。
nginx的配置是挺多的。代理的話就有如下這些參數(shù):
proxy_pass # 代理服務(wù)
proxy_redirect off; # 是否允許重定向
proxy_set_header Host remote_addr; # 設(shè)置客戶(hù)端IP 地址
proxy_connect_timeout 90; # 連接代理服務(wù)超時(shí)時(shí)間
proxy_send_timeout 90; # 請(qǐng)求發(fā)送最大時(shí)間
proxy_read_timeout 90; # 讀取最大時(shí)間
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
nginx我們最多的是用來(lái)做負(fù)載用的鹦筹。nginx用的負(fù)載算法铝阐,是輪訓(xùn)算法。
location / {
proxy_pass http://loadBalance;
}
upstream loadBalance {
server localhost:8080 weight=1;
server localhost:8090 weight=2;
}
上面這端配置就是請(qǐng)求loadBalance的請(qǐng)求铐拐,分別達(dá)到本機(jī)的8080跟8090端口徘键,2個(gè)請(qǐng)求的權(quán)重就是1跟2。
nginx還可以用來(lái)做緩存遍蟋,緩存這塊沒(méi)怎么用過(guò)吹害,但是一般的開(kāi)發(fā)過(guò)程中,大概了解負(fù)載跟代理這塊的知識(shí)就應(yīng)該可以用了匿值。