服務(wù)器 ?-?@amazeUI ?-?2017-02-09 07:31:45
??????? nginx反向代理是什么(有人叫它動(dòng)靜分離)涣觉?以前看到這些個(gè)詞腦袋是懵的,網(wǎng)上也有很多解釋展箱,普遍認(rèn)為這個(gè)名字有點(diǎn)裝了旨枯。為了提高吞吐量,有些服務(wù)器是專門跑程序用的混驰,有些服務(wù)器是跑靜態(tài)資源的攀隔,你可能訪問一個(gè)網(wǎng)頁皂贩,里面有圖片,而這個(gè)圖片并不是你訪問的這個(gè)網(wǎng)頁的服務(wù)器昆汹,也叫前端服務(wù)器明刷,而是你的圖片請(qǐng)求被Nginx轉(zhuǎn)發(fā)到了一臺(tái)后端服務(wù)器,由后端服務(wù)器提供給前端服務(wù)器再返回到客戶端的满粗。我這臺(tái)nginx的配置非常細(xì)致辈末,有nginx.conf,在這個(gè)配置中包含了兩個(gè)文件夾,一個(gè)是sites-available映皆,一個(gè)是sites-enabled,nginx.cof一般用來做整個(gè)nginx的配置挤聘,域名配置段在sites-avaliable下,然后建立一個(gè)軟連接到sites-enabled下去捅彻。反向代理就寫在域名配置段里组去,客戶端通過訪問服務(wù)器,服務(wù)器將請(qǐng)求分配按照server段里的則正匹配步淹,將請(qǐng)求按照fastcgi發(fā)送到php-fpm通過分配再到我們的程序从隆。反向代理一樣,也需要通過正則來捕捉到用戶的請(qǐng)求缭裆。
location ~ \.(jpg|jpeg|png|gif)$ {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://服務(wù)器地址:端口號(hào);
}
??????? server段里多加以上這一條键闺,前端的反向代理的工作就完成了。(當(dāng)然要開啟反向代理在nginx.conf里)以上捕捉到圖片格式結(jié)尾的就將這種請(qǐng)求轉(zhuǎn)發(fā)到服務(wù)器地址澈驼,后端服務(wù)器只要監(jiān)聽這個(gè)端口將root指向資源目錄就行了辛燥。當(dāng)這一切做完后會(huì)發(fā)現(xiàn),后端服務(wù)器獲取到的并不是用戶的ip地址而是前端服務(wù)器的ip(通過nginx的訪問日志)盅藻,這是正常的购桑,本來就是前段請(qǐng)求的畅铭,但是可以通過proxy_set_header段將用戶的真實(shí)ip帶到后端服務(wù)器去氏淑,而后端服務(wù)器需要接收傳過來的這個(gè)參數(shù),日志的格式默認(rèn)情況下是不接收這種參數(shù)的硕噩,日志格式在nginx.conf里面定義假残,默認(rèn)沒有定義,自己加上去就可以了炉擅。
log_format main ‘$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.log main;
??????? 這就是日志的格式辉懒,可以自己添加和修改,上面主要描述的是定義一個(gè)格式這個(gè)格式的名字為main,這個(gè)格式里包含了哪些東西順序是怎樣的谍失,定義訪問成功的日志的路徑眶俩,使用main格式來進(jìn)行寫入。
??????? 改完后快鱼,前端服務(wù)器nginx -s reload颠印,后端服務(wù)器nginx -s reopen纲岭。反向代理就是這樣。有反向代理线罕,當(dāng)然也有正向代理了止潮,也很簡(jiǎn)單。