nginx實現請求轉發

反向代理適用于很多場合,負載均衡是最普遍的用法。

nginx?作為目前最流行的web服務器之一,可以很方便地實現反向代理。

nginx?反向代理官方文檔:?NGINX REVERSE PROXY

當在一臺主機上部署了多個不同的web服務器,并且需要能在80端口同時訪問這些web服務器時,可以使用?nginx?的反向代理功能: 用?nginx?在80端口監聽所有請求,并依據轉發規則(比較常見的是以 URI 來轉發)轉發到對應的web服務器上。

例如有?webmail?,?webcom?以及?webdefault?三個服務器分別運行在?portmail?,?portcom?,?portdefault?端口,要實現從80端口同時訪問這三個web服務器,則可以在80端口運行?nginx, 然后將?/mail?下的請求轉發到?webmail?服務器, 將?/com下的請求轉發到?webcom?服務器, 將其他所有請求轉發到?webdefault?服務器。

假設服務器域名為example.com,則對應的?nginx?http配置如下:

  1. ?
    http {
  2. ?
    server {
  3. ?
    server_name example.com;
  4. ?
    ?
  5. ?
    location /mail/ {
  6. ?
    proxy_pass http://example.com:protmail/;
  7. ?
    }
  8. ?
    ?
  9. ?
    location /com/ {
  10. ?
    proxy_pass http://example.com:portcom/main/;
  11. ?
    }
  12. ?
    ?
  13. ?
    location / {
  14. ?
    proxy_pass http://example.com:portdefault;
  15. ?
    }
  16. ?
    }
  17. ?
    }

以上的配置會按以下規則轉發請求(?GET?和?POST?請求都會轉發):

  • 將?http://example.com/mail/?下的請求轉發到?http://example.com:portmail/
  • 將?http://example.com/com/?下的請求轉發到?http://example.com:portcom/main/
  • 將其它所有請求轉發到?http://example.com:portdefault/

需要注意的是,在以上的配置中,webdefault?的代理服務器設置是沒有指定URI的,而?webmail?和?webcom?的代理服務器設置是指定了URI的(分別為?/?和?/main/)。 如果代理服務器地址中是帶有URI的,此URI會替換掉?location?所匹配的URI部分。 而如果代理服務器地址中是不帶有URI的,則會用完整的請求URL來轉發到代理服務器。

官方文檔描述:

If the URI is specified along with the address, it replaces the part of the request URI that matches the location parameter. If the address is specified without a URI, or it is not possible to determine the part of URI to be replaced, the full request URI is passed (possibly, modified).

以上配置的轉發示例:

  • http://example.com/mail/index.html?->?http://example.com:portmail/index.html
  • http://example.com/com/index.html?->?http://example.com:portcom/main/index.html
  • http://example.com/mail/static/a.jpg?->?http://example.com:portmail/static/a.jpg
  • http://example.com/com/static/b.css?->?http://example.com:portcom/main/static/b.css
  • http://example.com/other/index.htm?->?http://example.com:portdefault/other/index.htm

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/102471

(34)
單爆手單爆手
上一篇 2018-07-08
下一篇 2018-07-08

相關推薦

  • 軟raid5創建及管理

    linux mdadm raid5

    Linux筆記 2018-04-28
  • yum配置

    本節簡要介紹本地yum配置以及網絡yum源的配置

    Linux筆記 2018-04-22
  • 學習liunx 系統筆記

    服務器按應用功能可分為:web 服務器 ? 數據庫服務器 ? 文件服務器 ?中間件應用服務器 ?日子服務器 ? 監控服務器 ? 程序版本控制服務器 ?虛擬機服務器 ? ? 郵件服務器 ? 打印服務器 ? 域控制服務器 ?多媒體服務器 ?通訊服務器 ? ?ERP 服務器等! 服務器按外形可分為:塔式服務器 ? 、機架式服務器 ?、刀片式服務器。  

    Linux筆記 2018-04-01
  • 正則表達式淺解

    正則表達式:由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能。 擴展正則表達式元字符: 字符匹配:. 匹配任意單個字符[] 匹配指定范圍內的任意單個字符[^] 匹配指定范圍外的任意單個字符[:alnum:] 字母和數字[:alpha:] 代表任何英文大小寫字符,亦即 A-Z, a-z[:lower:] 小…

    2018-04-07
  • Linux程序包管理

    Linux程序包管理 rpm rpm命令是RPM軟件包的管理工具。rpm原本是Red Hat Linux發行版專門用來管理Linux各項套件的程序 語法 rpm(選項)(參數) rpm {-i|–install} [install-options] PACKAGE_FILE … rpm {-U|–upgrade} [install-options] …

    Linux筆記 2018-04-03
欧美性久久久久