成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【nginx網(wǎng)站性能優(yōu)化篇(2)】反向代理實(shí)現(xiàn)Apache與Nginx的動(dòng)靜分離(LNMPA)

liukai90 / 3903人閱讀

摘要:多帶帶使用處理大量動(dòng)態(tài)頁(yè)面時(shí)容易產(chǎn)生頻繁的錯(cuò)誤。采用能夠更好的解決架構(gòu)中由于方面產(chǎn)生的錯(cuò)誤,同時(shí)能夠以很簡(jiǎn)單的方式提供更安全的多用戶多站點(diǎn)環(huán)境。這個(gè)值可以是一個(gè)文本,變量或者它們的組合。在指定的字段中沒(méi)有定義時(shí)會(huì)從它的上級(jí)字段繼承。

為什么要使用反向代理

具體請(qǐng)參考這篇博文: 【Linux常識(shí)篇(1)】所謂的正向代理與反向代理

LNMPA

通過(guò)Nginx強(qiáng)大的反向代理功能,把動(dòng)態(tài)文件給Apache處理,這就形成了LNMPA架構(gòu)

LNMP或LAMP的劣勢(shì)

Nginx是一個(gè)小巧而高效的Linux下的Web服務(wù)器軟件,與Apache相比,消耗資源更少,支持的并發(fā)連接,更高的效率,反向代理功能效率高、靜態(tài)文件處理快等,但動(dòng)態(tài)頁(yè)面處理能力不如Apache等老牌軟件成熟。多帶帶使用Nginx處理大量動(dòng)態(tài)頁(yè)面時(shí)容易產(chǎn)生頻繁的502錯(cuò)誤。

Apache是一款老牌的Web服務(wù)器軟件,在高并發(fā)時(shí)對(duì)隊(duì)列的處理比FastCGI更成熟,Apache的mod_php效率比php-cgi更高且更穩(wěn)定、對(duì)偽靜態(tài)支持好,不需要轉(zhuǎn)換、多用戶多站點(diǎn)權(quán)限等方面有著更好的效果,而多帶帶使用Apache處理靜態(tài)頁(yè)面時(shí),對(duì)內(nèi)存的占用遠(yuǎn)遠(yuǎn)超過(guò)Nginx。

LNMPA的優(yōu)勢(shì)

LNMPA使用Nginx作為前端服務(wù)器,能夠更快、更及時(shí)地使用更少的系統(tǒng)資源處理靜態(tài)頁(yè)面、js、圖片等文件,當(dāng)客戶端請(qǐng)求訪問(wèn)動(dòng)態(tài)頁(yè)面時(shí),由Nginx反向代理給作為后端服務(wù)器的Apache處理,Apache處理完再交予Nginx返回給客戶端。
采用LNMPA能夠更好的解決LNMP架構(gòu)中由于PHP-FPM方面產(chǎn)生的502錯(cuò)誤,同時(shí)能夠以很簡(jiǎn)單的方式提供更安全的多用戶多站點(diǎn)環(huán)境。

在虛擬機(jī)上配置反向代理的步驟

首先假設(shè)你已經(jīng)假設(shè)好了LNMP架構(gòu)了,這時(shí)我們還要安裝Apache和php,為什么還要再裝一次PHP?因?yàn)锳pache默認(rèn)是把PHP作為本身的一個(gè)模塊(mod_php)來(lái)運(yùn)行的,與Nginx的運(yùn)行方式不同.

step1: 安裝與配置Apache與php

我們的目的是在localhost:88上配置web1和web2的站點(diǎn)

安裝
yum -y install httpd httpd-devel # Ubuntu里面叫做Apache2
yum -y install php php-mysql php-common php-gd php-mbstring php-mcrypt php-devel php-xml
配置

Apache配置文件/etc/httpd/conf/httpd.conf修改如下信息(不同的就修改,沒(méi)有的就添加)

Listen 88
ServerName localhost:88
NameVirtualHost *:88


DocumentRoot /home/wwwroot/web2/  
ServerName web2.com          
ErrorLog logs/web2-error_log              
CustomLog logs/web2-access_log common     



DocumentRoot /home/wwwroot/web1/  
ServerName web1.com          
ErrorLog logs/web1-error_log              
CustomLog logs/web1-access_log common     

然后配置hosts后通過(guò)以下能正常訪問(wèn)到默認(rèn)的index.php就代表完成第一步

web1.com:88
web2.com:88


step2: 在Nginx.conf中配置反向代理 通過(guò)proxy_pass指向代理服務(wù)器Apache
語(yǔ)法:proxy_pass URL
默認(rèn)值:no       
作用域:location, location中的if字段       
這個(gè)指令設(shè)置被代理服務(wù)器的地址和被映射的URI,地址可以使用主機(jī)名或IP加端口號(hào)的形式,例如:proxy_pass http://localhost:8000/uri/;
# 在Nginx的web1的server段加上
location / {
    proxy_pass http://127.0.0.1:88;
}

重啟Nginx服務(wù),然后再訪問(wèn)web1.com(客戶端192.168.42.196 -> 服務(wù)端192.168.42.188),這個(gè)時(shí)候訪問(wèn)的是Nginx監(jiān)聽的80端口,進(jìn)的是Nginx服務(wù),然后Nginx的location命中,再然后由Nginx訪問(wèn)88的httpd(Apache)服務(wù),然后通過(guò)Apache來(lái)解析執(zhí)行該文件,這時(shí)產(chǎn)生兩條日志分別是Nginx服務(wù)和Apache服務(wù)的兩條訪問(wèn)日志

# Nginx
192.168.42.196 - - [27/Sep/2015:16:06:10 +0800] "GET / HTTP/1.1" 200 20 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0" -

#Apache
192.168.42.188 - - [27/Sep/2015:16:06:10 +0800] "GET / HTTP/1.0" 200 20

我們注意到訪問(wèn)Apache的ip就是服務(wù)器的ip,這跟我們想要的客戶端ip不符,這時(shí)我們就要用到另外一個(gè)指令proxy_set_header

通過(guò)proxy_set_header向代理服務(wù)器Apache發(fā)送真實(shí)客戶端IP

這個(gè)指令允許將發(fā)送到被代理服務(wù)器的請(qǐng)求頭重新定義或者增加一些字段。這個(gè)值可以是一個(gè)文本,變量或者它們的組合。proxy_set_header在指定的字段中沒(méi)有定義時(shí)會(huì)從它的上級(jí)字段繼承。

語(yǔ)法:proxy_set_header header value 
默認(rèn)值: Host and Connection 
使用字段:http, server, location 
location / {
    proxy_pass http://127.0.0.1:88;
    proxy_set_header  X-Real-IP  $remote_addr; #加上這一行,把$remote_addr賦給變量X-Real-IP,然后該變量可以被后端服務(wù)器(被反向代理的服務(wù)器)的日志格式中接收到(不管是Nginx和Apache都可以)
}

注意: 此時(shí)Nginx已經(jīng)通過(guò)proxy_pass向代理服務(wù)器Apache發(fā)送真實(shí)客戶端IP了,但是Apache還沒(méi)接受Nginx發(fā)送過(guò)來(lái)的IP

所以我們還要去更改Apache的配置文件

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined

# 將%h修改為%{X-Real-IP}i,這里要注意在虛擬主機(jī)中的日志格式是不是combined,反正就是修改對(duì)應(yīng)的日志格式既可;

LogFormat "%{X-Real-IP}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined

此時(shí)我們就可以把PHP動(dòng)態(tài)文件返回給Apache處理,然后Nginx本身就只處理靜態(tài)文件,這時(shí)我們就可以通過(guò)Nginx使用到Apache強(qiáng)大的偽靜態(tài)功能了

也可以通過(guò)配置緩存功能加速Web請(qǐng)求,緩存真實(shí)Web服務(wù)器上的某些靜態(tài)資源,減輕真實(shí)Web服務(wù)器的負(fù)載壓力

location ~ .(jpg|jpeg|png|gif)$ {
    proxy_pass http://192.168.1.204:8080;
    expires 1d;
}
step3: 推薦配置

事實(shí)上Nginx需要反向代理過(guò)去的,不僅僅有ip,還包含著客戶端http請(qǐng)求頭必要信息,比如cookie,host,referer等信息,所以推薦如下配置:

location /
{
    try_files $uri @apache; #try_files 將嘗試你列出的文件并設(shè)置內(nèi)部文件指向
}

location @apache
{
    internal; # internal指令指定某個(gè)location只能被“內(nèi)部的”請(qǐng)求調(diào)用,外部的調(diào)用請(qǐng)求會(huì)返回”Not found”
    proxy_pass http://127.0.0.1:88;
    
    proxy_connect_timeout 300s;
    proxy_send_timeout   900;
    proxy_read_timeout   900;
    proxy_buffer_size    32k;
    proxy_buffers     4 32k;
    proxy_busy_buffers_size 64k;
    proxy_redirect     off;
    proxy_hide_header  Vary;
    proxy_set_header   Accept-Encoding "";
    proxy_set_header   Host   $host;
    proxy_set_header   Referer $http_referer;
    proxy_set_header   Cookie $http_cookie;
    proxy_set_header   X-Real-IP  $remote_addr;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/40499.html

相關(guān)文章

  • Nginx+Tomcat整合體驗(yàn)

    摘要:題外話,由于使用經(jīng)常需要編輯,我們可以借助來(lái)使語(yǔ)法高亮,看起來(lái)更清晰明了。移動(dòng)到目錄在中添加再打開,已經(jīng)有語(yǔ)法高亮了里面提供了很多可以調(diào)節(jié)優(yōu)化的地方,這里簡(jiǎn)要了解模塊的幾個(gè)常用參數(shù)。允許或禁止基于請(qǐng)求響應(yīng)的壓縮。表示匹配的路徑。 Nginx是一款輕量級(jí)的Web服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器。在Java的Web架構(gòu)中,通常使用Tomcat和Nginx進(jìn)行...

    heartFollower 評(píng)論0 收藏0
  • 前端必須知道Nginx常用配置

    摘要:負(fù)載均衡是通過(guò)后端引入一個(gè)負(fù)載均衡器和至少一個(gè)額外的服務(wù)器來(lái)緩解這類問(wèn)題增加的服務(wù)器和原本的服務(wù)器提供相同的內(nèi)容。負(fù)載均衡不需要前端進(jìn)行配置,主要是服務(wù)端進(jìn)行配置,前端稍作了解即可。 Nginx主要功能 負(fù)載均衡 反向代理 動(dòng)靜分離 配置https 負(fù)載均衡 負(fù)載均衡是一門計(jì)算機(jī)網(wǎng)絡(luò)技術(shù),主要用來(lái)優(yōu)化資源使用、最大化吞吐率、最小化響應(yīng)時(shí)間、同時(shí)避免過(guò)載的目的。如果一個(gè)網(wǎng)站只有一臺(tái)服...

    tracymac7 評(píng)論0 收藏0
  • nginx反向代理、動(dòng)靜分離、負(fù)載均衡

    摘要:反向代理要說(shuō)反向代理,我們就先要理解正向代理下面我們就談?wù)務(wù)虼砗头聪虼戆伞?蛻舳瞬拍苁褂谜虼怼7聪虼砜偨Y(jié)就一句話代理端代理的是服務(wù)端。因此,動(dòng)態(tài)資源轉(zhuǎn)發(fā)到服務(wù)器我們就使用到了前面講到的反向代理了。 反向代理 要說(shuō)反向代理,我們就先要理解正向代理 ,下面我們就談?wù)務(wù)虼砗头聪虼戆伞?正向代理 一個(gè)位于客戶端和原始服務(wù)器(origin server)之間的服務(wù)器,為了從原始...

    DTeam 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<