最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

自動化Nginx服務器的反向代理的配置方法

 更新時間:2015年06月28日 10:47:45   投稿:goldensun  
這篇文章主要介紹了自動化Nginx服務器的反向代理的配置方法,反向代理是Nginx服務器的招牌功能,需要的朋友可以參考下

 2015628104630354.png (640×479)

如果可以減少過多的外部隔離的API和簡化部署的細節(jié) 這會是非常好的。

在以前的文章中,我解釋了"一些使用反向代理的好處"。在我目前的項目里,我們已經構建分布式面向服務的架構,也顯式提供了一個HTTP API,我們使用反向代理將請求路由通過API路由給單個組件。我們選擇了Nginx Web這個優(yōu)秀的服務器作為我們的反向代理,它快速、可靠且易于配置。我們通過它將多個HTTP的API服務聚合到一個URL空間。舉例來說,當你鍵入:

http://api.example.com/product/pinstripe_suit
它將被路由到:
http://10.0.1.101:8001/product/pinstripe_suit
但當你訪問:
http://api.example.com/customer/103474783
它將被路由到:
http://10.0.1.104:8003/customer/103474783

對使用者來言,他們覺得是在使用同一個URL空間(http://api.example.com/blah/blah),但在后端不同的頂級分類的URL被路由到不同的后端服務器。 /prodect/...路由到 10.0.1.101:8001, /customer/…則路由到10.0.1.104:8003。 我們也希望這是自動配置。比如說我想創(chuàng)建一個新的組件來記錄的庫存水平。相比于擴展現有的組件,我更希望能夠寫另一個獨立的可執(zhí)行文件或提供服務的HTTP端點,然后自動部署成為我的云計算基礎架構中的主機之一,并使Nginx的自動將http ://api.example.com/sock/whatever 路由我新組件。 我們也想進行 后端服務的負載平衡,我們也想部署我們的股票 新API的多個服務實例間的Nginx自動輪詢。


我們稱每個頂級分類(/stock、/produck、/customer)為一個聲明。 A組件上線時通過RabbitMQ發(fā)布了一個'AddApiClaim'。此消息有3個字段:'聲明','IP地址','端口地址'。我們有一個'ProxyAutomation'的特殊組件,這個組件接收這些消息并按要求重寫Nginx配置項。它使用SSH和SCP登錄到nginx服務器,傳輸各種配置文件,并指示Nginx的重新加載配置。我們使用the excellent SSH.NET庫來進行自動化。

Nginx的配置是一個非常好的事情是支持通配符。看一看我們的頂級配置文件:
 

復制代碼 代碼如下:

...
 
 http {
 
     include       /etc/nginx/mime.types;
 
     default_type  application/octet-stream;
 
  
 
     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;
 
  
 
     sendfile        on;
 
     keepalive_timeout  65;
 
  
     include /etc/nginx/conf.d/*.conf;
 
 }

如16行所描述, 將conf.d目錄的所有.conf引用到此處.

在conf.d文件夾內,有一個文件包含了所有api.example.com的請求配置:
 

復制代碼 代碼如下:

include     /etc/nginx/conf.d/api.example.com.conf.d/upstream.*.conf;
 
  
 
 server {
 
     listen          80;
 
     server_name     api.example.com;
 
  
 
     include         /etc/nginx/conf.d/api.example.com.conf.d/location.*.conf;
 
  
 
     location / {
 
         root    /usr/share/nginx/api.example.com;
 
         index   index.html index.htm;
 
     }
 
 }

這段配置讓 Nginx 偵聽來自 80 端口的 api.example.com 的請求。


這里包括兩部分。第一個部分是第一行,我將在以后討論。第7行表述了將子目錄"api.example.com.conf.d"中的location.*.conf引用到配置中來。我們代理服務器的自動化組件添加新的組件(AKA API claims)通過引入新的location.*.conf。舉個例子,我們的股票組件可能創(chuàng)建一個location.stock.conf配置文件,像這樣:
 

復制代碼 代碼如下:

location /stock/ {
 
     proxy_pass http://stock;
 
 }

這只是簡單的告訴Nginx將所有api.example.com/stock/…的代理請求轉發(fā)到'stock'中定義的后端服務器,這些定義存放在'upstream.*.conf'中。代理自動化組件也引入了一個名為upstream.stock.conf文件,它看起來像這樣:
 

復制代碼 代碼如下:

upstream stock {
 
    server 10.0.0.23:8001;
 
    server 10.0.0.23:8002;
 
}

這些配置告訴Nginx將所有到api.example.com/stock/的請求輪詢到給定的地址,在這個例子中兩個實例在同一臺機器(10.0.0.23)上,一個在8001端口,一個在8002端口。
 

正如股票組件的部署一樣,添加新條目可以同樣增加到upstream.stock.conf中。同樣,當組件卸載時,只要刪除對應條目就可以了,當所有組件移除時,將整個文件已就刪除。

這種基礎架構可以讓我們聚合組件的基礎設備。我們可以 通過簡單地添加新的組件實例來擴展應用程序。作為組件開發(fā)人員也不需要做任何代理配置,只需要確保組件發(fā)送了添加或刪除API聲明的消息就可以了。

相關文章

  • pycharm右鍵沒有run,run不了問題的解決

    pycharm右鍵沒有run,run不了問題的解決

    這篇文章主要介紹了pycharm右鍵沒有run,run不了問題的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python使用matplotlib創(chuàng)建Gif動圖的思路

    Python使用matplotlib創(chuàng)建Gif動圖的思路

    這篇文章主要介紹了Python使用matplotlib創(chuàng)建Gif動圖,我們將討論matplotlib提供的名為“Animation”的動畫庫之一,Python二維繪圖庫是Matplolib可以輕松創(chuàng)建繪圖、直方圖、條形圖、散點圖等,需要的朋友可以參考下
    2022-04-04
  • python Tornado框架詳解

    python Tornado框架詳解

    Tornado是一個 Python Web框架,用于開發(fā)高性能網絡應用程序,本文給大家詳細介紹python Tornado框架的相關知識,感興趣的朋友一起看看吧
    2024-03-03
  • Python自動化辦公之創(chuàng)建PPT文件

    Python自動化辦公之創(chuàng)建PPT文件

    python-pptx模塊是Python中用于PPT操作的模塊。本文將利用這一模塊實現創(chuàng)建PPT文件。文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-05-05
  • 跟老齊學Python之玩轉字符串(2)更新篇

    跟老齊學Python之玩轉字符串(2)更新篇

    本文是玩轉字符串的續(xù)篇,繼續(xù)對字符串的連接方法進行介紹,以及字符串復制、字符串長度、字符大小寫的轉換。非常不錯的文章,希望對大家有所幫助
    2014-09-09
  • 關于python列表相關知識點

    關于python列表相關知識點

    這篇文章主要介紹了關于python列表相關知識點,變量可以存儲一個元素,而列表是一個大容器,可以存儲N多個元素,程序可以方便的對這些數據進行整體操作,需要的朋友可以參考下
    2023-04-04
  • 在jupyter notebook 添加 conda 環(huán)境的操作詳解

    在jupyter notebook 添加 conda 環(huán)境的操作詳解

    這篇文章主要介紹了在jupyter notebook 添加 conda 環(huán)境的操作詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python非對稱加密算法RSA實現原理與應用詳解

    python非對稱加密算法RSA實現原理與應用詳解

    RSA加密算法是一種非對稱加密算法,RSA算法的安全性基于大數分解的困難性,即已知兩個大素數p和q的乘積n,求解p和q非常困難,RSA算法廣泛應用于數據加密和數字簽名等領域,本文將詳細介紹如何在Python中使用RSA算法進行加密和解密,需要的朋友可以參考下
    2024-09-09
  • PYTHON 中使用 GLOBAL引發(fā)的一系列問題

    PYTHON 中使用 GLOBAL引發(fā)的一系列問題

    這篇文章主要介紹了PYTHON 中使用 GLOBAL引發(fā)的一系列問題的相關資料,需要的朋友可以參考下
    2016-10-10
  • matplotlib多子圖實現共享坐標軸的示例詳解

    matplotlib多子圖實現共享坐標軸的示例詳解

    這篇文章主要為大家詳細介紹了matplotlib繪制多子圖師如何實現共享坐標軸,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-02-02

最新評論

古交市| 宝坻区| 家居| 简阳市| 安国市| 沁源县| 梅河口市| 确山县| 余干县| 九江市| 伊金霍洛旗| 江阴市| 嫩江县| 吉木萨尔县| 清镇市| 嘉兴市| 松江区| 沙雅县| 兰溪市| 翁牛特旗| 保亭| 舞钢市| 兖州市| 长寿区| 威信县| 娄底市| 柞水县| 祁门县| 布拖县| 曲沃县| 石阡县| 芮城县| 盐城市| 建始县| 蕉岭县| 西贡区| 武义县| 茂名市| 潞西市| 勃利县| 天台县|