亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Nginx 學習總結(jié)(5) —— 反向代理

Achilles / 1549人閱讀

摘要:代理請求當代理請求時,它會將請求發(fā)送到指定的代理服務(wù)器,獲取響應(yīng)并將其發(fā)送回客戶端。是否啟用緩沖使用指令,默認是開啟的。

這是 Nginx 學習總結(jié)的第五篇,上一篇介紹到了 Nginx 學習總結(jié)(4)—— Rewrite 模塊,這一篇會對 反向代理 相關(guān)知識做一些總結(jié)。

什么是代理?代理通常用于在多個服務(wù)器之間分配負載,無縫地顯示來自不同網(wǎng)站的內(nèi)容,或通過除 HTTP 以外的協(xié)議將請求處理傳遞給應(yīng)用程序服務(wù)器。
代理請求

當 Nginx 代理請求時,它會將請求發(fā)送到指定的代理服務(wù)器,獲取響應(yīng)并將其發(fā)送回客戶端。允許將請求代理到 HTTP 服務(wù)器(另一個 Nginx 服務(wù)器或任何其他服務(wù)器),或使用一個特定的協(xié)議到非 HTTP 服務(wù)器(它可以運行特定框架開發(fā)的應(yīng)用程序,如 PHPPython),支持的協(xié)議包括 FastCGI、uwsgiSCGImemcached。

如果想將一個請求傳遞(反向代理)給 HTTP 代理服務(wù)器,需要在 Location 模塊中指定 proxy_pass 指令,例如:

location /some/path/ {
    proxy_pass http://www.example.com;
}

# 發(fā)送如下請求
# curl 127.0.0.1:80/some/path/
# 該請求會傳遞到 www.example.com 服務(wù)器中處理

傳遞地址可以指定為域名或 IP 地址,使用 IP 地址時應(yīng)當指定一個端口:

location ~ .php {
    proxy_pass http://127.0.0.1:8080;
}

如果想將一個請求傳遞(反向代理)給非 HTTP 代理服務(wù)器,應(yīng)當合理選擇使用如下指令:

fastcgi_pass 將請求傳遞給 FastCGI 服務(wù)器;

uwsgi_pass 將請求傳遞給 uwsgi_pass 服務(wù)器;

scgi_pass 將請求傳遞給 SCGI 服務(wù)器;

memcached_pass 將請求傳遞給 memcached 服務(wù)器。

location ~ .php$ {
    root           /usr/share/nginx/html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

需要注意的是,傳遞地址后面是否帶有 /,轉(zhuǎn)發(fā)的 URL 是不同的:

location ^~ /static/ { 
    proxy_pass http://www.test.com; # 傳遞地址后面不加 "/",轉(zhuǎn)發(fā)地址將包含匹配參數(shù)
}
# 發(fā)送如下請求
# curl http://localhost/static/index.html
# 轉(zhuǎn)發(fā)到 http://www.test.com/static/index.html
location ^~ /static/ { 
    proxy_pass http://www.test.com/; # 傳遞地址后面帶有 "/",轉(zhuǎn)發(fā)地址將不包含匹配參數(shù)
}
# 發(fā)送如下請求
# curl http://localhost/static/index.html
# 轉(zhuǎn)發(fā)到 http://www.test.com/index.html
傳遞請求頭

默認情況下, Nginx 會重新定義請求頭:Host 設(shè)置為 $proxy_host 變量的值;Connection 設(shè)置為 close;其他空字符串的頭字段會被移除。通過 proxy_set_header 指令可以改變請求頭字段的值。該指令可以在 location 塊或更高級的塊中指定,比如 serverhttp。我們來看一個傳遞請求頭的應(yīng)用:

location /some/path/ {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for; # 后端的Web服務(wù)器可以通過X-Forwarded-For獲取用戶真實IP
    proxy_set_header Accept-Encoding "";  
    proxy_pass http://localhost:8000;
}
配置緩沖區(qū)

默認情況下, Nginx 緩沖來自代理服務(wù)器的響應(yīng)。響應(yīng)存儲在內(nèi)部緩沖區(qū)中,在接收到整個響應(yīng)之前不會發(fā)送給客戶端。緩沖有助于優(yōu)化慢速客戶端的性能,因為如果響應(yīng)是從 Nginx 同步傳遞到客戶端,可能會浪費代理服務(wù)器的時間。啟用緩沖后,Nginx 允許代理服務(wù)器快速處理響應(yīng),而 Nginx 在客戶端需要下載它們時,將盡可能多的緩存響應(yīng)內(nèi)容。

是否啟用緩沖使用 proxy_buffering 指令,默認是開啟的。proxy_buffers 指令控制分配給請求的緩沖區(qū)的大小和數(shù)量,來自代理服務(wù)器的響應(yīng)的第一部分存儲在一個多帶帶的緩沖區(qū)中,其大小由 proxy_buffer_size 指令設(shè)置:

location /some/path/ {
    proxy_buffers 16 4k;
    proxy_buffer_size 2k;
    proxy_pass http://localhost:8000;
}

如果緩沖被禁用,則在從代理服務(wù)器接收到響應(yīng)的同時將響應(yīng)同步發(fā)送到客戶端。對于需要盡快開始接收響應(yīng)的快速交互式客戶端來說,這種行為可能是需要的:

location /some/path/ {
    proxy_buffering off;
    proxy_pass http://localhost:8000;
}

參考文章:

NGINX Reverse Proxy

proxy_pass 的小說明

Module ngx_http_proxy_module

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/39848.html

相關(guān)文章

  • Nginx 學習總結(jié)(6) —— 負載均衡

    摘要:實現(xiàn)負載均衡負載均衡是反向代理技術(shù)的一種運用。而實現(xiàn)負載均衡的核心在于如何將請求合理地分配給不同的后端服務(wù)器。 這是 Nginx 學習總結(jié)的第六篇,上一篇介紹到了 Nginx 學習總結(jié)(5) —— 反向代理,本文主要演示結(jié)合 proxy 和 upstream 模塊的使用來實現(xiàn) Nginx 的負載均衡。 Nginx 官網(wǎng)中對 upstream 模塊的介紹:ngx_http_upstrea...

    wwq0327 評論0 收藏0
  • Nginx

    摘要:此外,其也能夠提供強大的反向代理功能。是由為俄羅斯訪問量第二的站點開發(fā)的,第一個公開版本發(fā)布于年月日。 keepalived+nginx 實現(xiàn)高可用雙機熱備 + 負載均衡架構(gòu) 1 準備4個ubuntu16.04虛擬機(啟用網(wǎng)卡二并使用橋接模式):A服務(wù)器:192.168.0.103 主B服務(wù)器:192.168.0.104 主(備) 前端工程師學習 Nginx ...

    syoya 評論0 收藏0
  • Docker 快速安裝&搭建 Ngnix 環(huán)境,并配置反向代理

    摘要:一下載鏡像我這里用的是輕量級的鏡像下載完成后,通過命令檢查一下鏡像是否下載成功二先以簡單的方式運行鏡像以后臺方式運行鏡像指定容器的名稱為命令執(zhí)行完成后,通過命令確認一下容器是否啟動成功。 歡迎關(guān)注個人微信公眾號: 小哈學Java, 文末分享阿里 P8 高級架構(gòu)師吐血總結(jié)的 《Java 核心知識整理&面試.pdf》資源鏈接??!個人網(wǎng)站: https://www.exception.sit...

    鄒強 評論0 收藏0
  • Docker 快速安裝&搭建 Ngnix 環(huán)境,并配置反向代理

    摘要:一下載鏡像我這里用的是輕量級的鏡像下載完成后,通過命令檢查一下鏡像是否下載成功二先以簡單的方式運行鏡像以后臺方式運行鏡像指定容器的名稱為命令執(zhí)行完成后,通過命令確認一下容器是否啟動成功。 歡迎關(guān)注個人微信公眾號: 小哈學Java, 文末分享阿里 P8 高級架構(gòu)師吐血總結(jié)的 《Java 核心知識整理&面試.pdf》資源鏈接!!個人網(wǎng)站: https://www.exception.sit...

    xiaoqibTn 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<