Skip to content

using openresty build dynamic upstream [balancer]

Notifications You must be signed in to change notification settings

starjun/ngx-cdn

Repository files navigation

title tags grammar_cjkRuby
动态upstream
dynamic upstream,OpenResty,nginx lua
true

简易的动态upstream~ 暂时算法仅仅有ip_hash,url_hash,random weight.polling [权重+轮询] polling [beta]

安装 bash目录下的 install.sh 脚本 具体该脚本其他用法直接看源码吧~

sudo sh ./install.sh dynamic_upstream

使用 动态域名相关配置,直接看样例吧,比较好理解。 bal_list 源站服务器列表 [ip,port,[weight]] mode 负载均衡算法 certs 配置证书的 key dynamic_host.json DEMO

{
    "www.abc.com": {
        "bal_list": [["127.0.0.1",81],["127.0.0.1",82],["127.0.0.1",83]],
        "mode": "ip_hash"
    },
    "www.test.com": {
        "bal_list": [["127.0.0.1",81],["127.0.0.1",82]],
        "mode": "url_hash",
        "certs":"blah.com"
    },
    "www.test2.com": {
        "bal_list": [["127.0.0.1",84],["127.0.0.1",83],["127.0.0.1",82],["127.0.0.1",81]],
        "mode": "random",
        "certs":"example.foo.com"
    },
    "www.abc1.com": {
        "bal_list": [["127.0.0.1",81],["127.0.0.1",82],["127.0.0.1",83]],
        "mode": "polling"
    },
    "www.abc2.com": {
        "bal_list": [["127.0.0.1",81,1],["127.0.0.1",82],["127.0.0.1",83,9]],
        "mode": "weight.polling"
    }
}

证书相关配置,key为域名,ssl_certificate 证书(base64后),ssl_certificate_key 私钥(base64后) dynamic_certs.json

{
    "blah.com":{
        "e_time":"2020-09-09 19:30:00",
        "ssl_certificate":"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKakNDQWc2Z0F3SUJBZ0lVUTVVWVF0UTllZjlWRkVnL1VkL0RkaDNzSk9jd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0R6RU5NQXNHQTFVRUF4TUVjM1JoY2pBZUZ3MHhOakExTVRFd01ESXhORE5hRncweE5qQTJNVEF3TURJeQpNVE5hTUJNeEVUQVBCZ05WQkFNVENHSnNZV2d1WTI5dE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBCk1JSUJDZ0tDQVFFQW05M1BWTVBMOWlZVWQwWHhXT0hYSUU0MGlFR201c2tubkZCNmFvMWNiZ002REUwTW9aeWgKT3ZVcnRBL2J3MDRoa1dGYXpidnBmckZEeFhSdUp1YWxtOGFCLzU3REkwRE1seHhlS3YrNDNLSmZvTk5rWXBqNAo0ZUJYYWZjQkZxdVNOcnppdWt3UHBCUmdpRTE3dC9JQkJ6djFrMjBybklzdmRXQlhBY2xIcTNXSkltRnZDVVMwCnFIWmQzcnlOOXh5VklvMFFhUDNwQ0xPVnY1N2ZRMmUxN21CbTBNbVZvMTBsdUp4RkkyVTRGR1grNTF6ZHRReHEKRWtRTXZFbHRHMkZmS0lrb1pGaUdJcjFkY0FDYnV0UHNwZTM4eXJidTBMSkxNRDVjcldoc0FuUWVha1RTYmY0QQpCSTlYeWxVc0tZNW00RUlHaUg4Yi9VdzM0Qm13QU1iUnBRSURBUUFCbzNZd2REQWRCZ05WSFNVRUZqQVVCZ2dyCkJnRUZCUWNEQVFZSUt3WUJCUVVIQXdJd0hRWURWUjBPQkJZRUZENEtyUVBYLzhvSkpVa2hxMXBKWG1tYWtGRnEKTUI4R0ExVWRJd1FZTUJhQUZPSFRVbXBIK1F0aHo5NHVRbWdVZ1JuT3RrMnRNQk1HQTFVZEVRUU1NQXFDQ0dKcwpZV2d1WTI5dE1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQm1mNjEzYkRsMXQzRGYzUnRHSWpxZXI5cFN1U2F2Ck1qVHdzYVhBZ3EzS1dGQW42UHpvRms1WWQ5UGkwaDZnRGwxTGNqYk95eGZrd3Q3UUFpbkswd0pBM0VEKzZqVWUKdkFYYnBqNWFaaDE4azFiM2dZQXJ1L1hoTGovSWZSSkoyRm5jVzUzOVRhdlFOeTY4R1Y3TUpPQkJBS0w1dnNGdwpFbE1helgxWkIrV0JPc2MyQ0EzdzN1VXg0TDJMR003cTkwYlE4VVhSTHlLZVlSeEpGb05qcnIvdGRwYytUdHVuCjVqSTB3M1I2aE1uZGtaNkYrZ1RKRkFLQnBDTjFoM1VkQmdPUmFtMWdIR0ttblp5K29DekV2N1JNNEJqd1hFeXkKK3EyR3ZSaDRwci9vS0ZoNklacGdtUWFNYUh5M3VWcEcrODRPc1V1UUdVOFc2bEhlNjQzMVRrK0gKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ==",
        "ssl_certificate_key":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb2dJQkFBS0NBUUVBbTkzUFZNUEw5aVlVZDBYeFdPSFhJRTQwaUVHbTVza25uRkI2YW8xY2JnTTZERTBNCm9aeWhPdlVydEEvYncwNGhrV0ZhemJ2cGZyRkR4WFJ1SnVhbG04YUIvNTdESTBETWx4eGVLdis0M0tKZm9OTmsKWXBqNDRlQlhhZmNCRnF1U05yeml1a3dQcEJSZ2lFMTd0L0lCQnp2MWsyMHJuSXN2ZFdCWEFjbEhxM1dKSW1GdgpDVVMwcUhaZDNyeU45eHlWSW8wUWFQM3BDTE9WdjU3ZlEyZTE3bUJtME1tVm8xMGx1SnhGSTJVNEZHWCs1MXpkCnRReHFFa1FNdkVsdEcyRmZLSWtvWkZpR0lyMWRjQUNidXRQc3BlMzh5cmJ1MExKTE1ENWNyV2hzQW5RZWFrVFMKYmY0QUJJOVh5bFVzS1k1bTRFSUdpSDhiL1V3MzRCbXdBTWJScFFJREFRQUJBb0lCQUd2MHBiWEFKM1RGeTBjUgpXcWlGUTh0TVgzWkFncWsyaWdqcWROOTRLWnpJLzF1bHdpbnRvbjZEY1ZHMTZqREwzTlFrNmcrMUozUm9zdGdBClhJcjFGWjlmVG9zT0czby9WM1VTWU9iSFYvTDVRK0xRaDZjQzdOOEYwNFhCWHkra2hoRURvc1lHQ0k5TXpjK2EKV3laOHA5bXEzZHpPc0hZc3NTSkxKL2hFd1M4dmxLWVJyN3cwV2RGY0RZTG50REpvS0Y0WG9ybCs3bUNNMVJiRgpNaDFpQmpZYXNxbnBSWmtxVWw4TWQvOGs0WDUvZlFDWW5WQVRHVm00VW92MHNFdUltMHd3d0E5V3JyeGxxeEtYCjl4eGpBbU1kalhSM3MvNlIzdmlGUGo2MVZZK3N2WHdJKzhxZHFibGV2bkNuNTN1cEhTbGp0TE9hRWVGb0NiMDMKMmNRR0w4RUNnWUVBeUE1dmxySy93WmVLbUJKZEhKOFdpbUx1bnBWVWF5Vm9CbDRRUFpIL2pqRUpVMjJrNmRpcApWK2pLNHVsZlVJdTFWRW81cjZHTWZuT0tLQ2ZZMzhya3JJaTFBc3JEZkhnZkRJWnQ4ODZzbDZvU1YrT01waFpUClZrcWhtYnJiSy91UGZlWUpjcG9nSGRTWG51cGJYL3BjZTRNb2dZLzhoZUR6d2w1cXpPUnh0ZThDZ1lFQXgzUHIKbGdhNlByMzErY2U5eWl0Z2xBMStJcTd0TnZjVmVoQ2x4YTdFUkI0L3A3V2tXNlg2Q0dtV1BVRXJXVTE5V1BNWgp6cVhGS3lvS2xjZVFFTW1JcVI5YXpPVzBGd0VLTWthVzE2SURQcElaL244QTZJQTV5dzhZNDJrQysvWHFhd3dYClUzSG9QSGxmUk96QTV5VVZ6bUk4L2pUNXFzemh2RS8wUFVlbFphc0NnWUFUTkNlTURMNlJnODEvQ1l3OG1oemMKemVCZ0FxK20xV0ZsOHhPV0JYVEZubmxwczhXMzJOOXdtOTBWNlJjSU1WRUh0VlJTUXF5czJzUnhWRm5pS2FUSAoxeHVoRi91cDhCSHk3dGlSSmM2MWhGTGNjdkJtWlJBODRVOGY1YXJ5VHVTWVRrT3I1NVdicDNPaWdwYWc0UFNOCnVxcGh2WU9kQ2xuNzEzcGpEcTdIcXdLQmdFKzIrOVJWVWdDYmlZRFFIUUY5UHJkTmdUazVjcU9DTXpvN0J4WXcKR0U4bFM4bXFwa3JlMWtTZ2RxUjZ0R21YdDk1aUl0RmRuYVQzdzQxRFdrZnJWRXhMdE0ycGpNV1k2OHRXUFJsbgpyaVpHM0U3RDBjZ2EzMzVSeFYrMmE3UHFBRXZTWkV3OGZWWVdLRVp5M1ZKRWx5ZUtTZGhMc2ZGYXUybTVCdU9yCkMrYkxBb0dBY2dNQ3dKVXc3NmxTVUx0OW9ZQXFrK0VDSEtlZFFpUUVmZmprdFh2WjVUTzBkWFMrdFZaTlNzaXgKbWV0THdkYkJVeTh6b3FGbU1Zd0poTy9QV0dzcWdWcHV5bFpSTnNxWDkwVVNNbFpUTXR3S245c1B3TVpVZWdQUAozZE01ZjR6WWNsNmZlSzBwc3M2cFVhSmU0bm44c0ZVS2FuTExpRTVtSFh5SHdzemxsNDA9Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0t"
    },
    "example.foo.com":{
        "e_time":"-1",
        "ssl_certificate":"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURORENDQWh5Z0F3SUJBZ0lVRXV1VU0wSTFDVk5lYjJhM2g1STN3dFlVeUZFd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0R6RU5NQXNHQTFVRUF4TUVjM1JoY2pBZUZ3MHhOakExTVRFd01ESXhNVEphRncweE5qQTJNVEF3TURJeApOREphTUJveEdEQVdCZ05WQkFNVEQyVjRZVzF3YkdVdVptOXZMbU52YlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCCkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9nNHFVRlJvdnpvRUFlby9mR00yNlRsVXVDTnIvRzlTWkxoU1p0dFJ6ZWsKZzk3ZkdPYVdicStYaGlCcWRrS0hSZ0d3QWVLVGpEb25nNU1HRHZraEhMZHhubEUxRzRLdnBLeGhBb3Z3QTNlYgpXT3dRTjhObVNPTnVoMDZtblVMOVV6OFhTakk0RXFaUU51eGxmRS9IanprM0J0K2Y1YUxNd2FqS0NScDdYbE9uCnhOOUZ4bTExRlI3Y1oyN0ZSZ2ZXSFlJa2JJODRaM3hpZkJCWWtrUzVGUlBFazVUcE1NTURCSnhzY1V0REFRc1kKdTRoLzlHaTk1U0FGSi9vTm82L1FtOEdyMzJzZlQxbkQ0N3BtVzFoaUxoU1FrSTlPTEYyZ0tlS3g1ZHlweHlIUApyNXR3Z3ZwelVVVHl6ekZqeklockdUeC9jUXVFVVZvRXNManprSGpXdmpNQ0F3RUFBYU45TUhzd0hRWURWUjBsCkJCWXdGQVlJS3dZQkJRVUhBd0VHQ0NzR0FRVUZCd01DTUIwR0ExVWREZ1FXQkJUOWRZczRyYTBxRi94VTdHdlIKT1Vld2FHbWNBekFmQmdOVkhTTUVHREFXZ0JUaDAxSnFSL2tMWWMvZUxrSm9GSUVaenJaTnJUQWFCZ05WSFJFRQpFekFSZ2c5bGVHRnRjR3hsTG1admJ5NWpiMjB3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUtPSkVUOHZPNG9QCm1Icm5OSlFaaHhWTFpJOFY4aGE4UGxVZkNNb3hEUUUwbEVLRlFzTVQrNXNaRWU5a04vdEFJck9qSnlvSGh4ankKR1lScE8wZzZKd2U2dE1jdjdoQ3dTbzcvSEdDYldURFJUcnpoTmlETUJ3ejBQQU9KdEd6dlRTVEkrMm4yWU03KwpUSWhVcEIzS01udFBqakZwbE43YXVEb2h2dUtiVWtSa0x6MVZiMjRvUk40TkMzQTIwR3lwU3dHVTY0b3pFbElaCnJPb0swUFA4dE8vVGFpZGxCQUR5VnNSeTBWREx2WVBIY21rOVEzOHR2VUNMUVZkMVM0Zyt3Ty85RFE3ekhxL0wKYURNcHdjbkJ0WDUzbW5jVytjMU9LNG5aTWhtendlL0k1WVN2WkRBc3A3Znh0ZGIrWkZxTHZRb1Z5TFRUZmMrawpKdnhCR2hPMzB2UT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ==",
        "ssl_certificate_key":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb0FJQkFBS0NBUUVBNkRpcFFWR2kvT2dRQjZqOThZemJwT1ZTNEkydjhiMUprdUZKbTIxSE42U0QzdDhZCjVwWnVyNWVHSUdwMlFvZEdBYkFCNHBPTU9pZURrd1lPK1NFY3QzR2VVVFViZ3Era3JHRUNpL0FEZDV0WTdCQTMKdzJaSTQyNkhUcWFkUXYxVFB4ZEtNamdTcGxBMjdHVjhUOGVQT1RjRzM1L2xvc3pCcU1vSkdudGVVNmZFMzBYRwpiWFVWSHR4bmJzVkdCOVlkZ2lSc2p6aG5mR0o4RUZpU1JMa1ZFOFNUbE9rd3d3TUVuR3h4UzBNQkN4aTdpSC8wCmFMM2xJQVVuK2cyanI5Q2J3YXZmYXg5UFdjUGp1bVpiV0dJdUZKQ1FqMDRzWGFBcDRySGwzS25ISWMrdm0zQ0MKK25OUlJQTFBNV1BNaUdzWlBIOXhDNFJSV2dTd3VQT1FlTmErTXdJREFRQUJBb0lCQUhVbHFGUzRQelhBUjkzbApaWDRHWmdOd1lIZkJZbUhiOEpLMUxmSEhsZWEvQ250VEpuZWtxZC9RMjZ2Y3FSMzBxZDlPRUJWaUE1cU90blJqCjJRZmFxV2J0WFVWd09obWFTOE5lQ08vWk81YUorcmpUa1ozMEtvNzVBaTh1SkNWWU1EZWlveDVrWlJ3YldTbTIKSkprR2ZmMEtBbUNyaENlMWpYaDl1MHZ0c204V1BEUmJ0VzZ2cFNrWDBaeng3Sy9sWi9OZWg5Y0MrYzYwNndvRwpzbFQwMXFqeDZRVkdrZEllb256REYvZ1hKcWlZMUZTOE9PZkREb3VTcXZkWjk4TnRoSGFzM1lrbUZsRHVCdm5RCmpvRWs1UVMyY3dyNVV0UkFNd0JDREY4QmNtakczL3hzK2gzS0RtYzB0MlU0Mkt2SjhSSXJHa1EreGFyNzBTWngKeEtxcVd2RUNnWUVBL01uUGtSNThTS1JhOVMrUjdVVkpvc1hRK21TbFArQ203bnBEVnVXRW5kSmtpMDloTjFFOQpVenRjVEwrbnlESW9xSjRrNlVkZjBUTVZ6cVRwN1JheGJwMEdRL2pTbzlVSXlTYXdkbHg1MHlxT29lenlLVTAxCmp1QjdEMEg3OGo5aTlCZjdYS0EwMnlUUlQvM01jQzA0R05VL2lOVWJBRU9RMCt2b0QyQ0lFY3NDZ1lFQTZ5djAKNDc3aWQrYWgrbDRWazZRZjc0RjdMc201T05UeEpXcWxNUjljUk9rTkVqNVZSVkM0Y0lER1krZ3pCOW1abFF0YQpaMUJpaHgvNkZhMzJoZEFBL0hldTM4L0hjWTFpbTFkSEtkRHg1cnk2cEUra256L0FNcFJZUE9SdFlaWG5VMTFDCnFOZ0NPNXVPdWZjekhnaVc0QkVNNENnbjN4SHZQQ0JSRGF1bldEa0NnWUEwZlJNRVp2Z1hmVWtGc0NMMHlYWkkKdmhwdVk0ZU1nL0VsZzIySUZaQTcxUHZia1ZmMlRJQVhVRFFTRzVtVEVCY3hLK1V1S3d2U1BIRkN2eXR6ZDByUQpWUHFBRXFKcU1rbm91b2ZaaThvZjlxNDNJU1FIUDJqbmllVURmZ2Y2ZlA3bkFEUEpQOXE1eGlOUUlMcmFjQWs5CjNzbWFkK1ZyWUp3cDVNb0NwMkNaa1FLQmdCSzkreE5YZUNjRUcyNmZwdXFRVHZkQWczZTBIZTNZa3F0ZnQzQ1YKeGoyN3NRMytKNytSY2xHTkFjS2VrOHFSWGZzUjM0K1NTWGZwWlgzcTBsWFJ3UEpkKzNMYzFWRklhazVsQTBmaQozaFI4Z0FkdVRYbGZsRXF6cGVDY2Q5Y3FJamh6bTBkbmg2NEdkTFovYS9SOXpNQm91M1QxM2srWjEwNGNhVGxFCnI5NkpBbjgrTDNYZXJHNStEejM3OHpRbjBrRzlGN0xNekJYZG9sU0RCY2hxZks0MlVFRE1TdTJiQjU2M2J5MHkKMWhJNi9RUkxWcVdFWU5CeXNQSDdCb25yNU5VTTdxSDNoWEYySmxCVWtranAzSWNBN2MwbUcxK0g3Sm5zcEpjNApZeUxCS1RDTkhjVElGY2lxM2xHV29SdEsrOHhtUjJnWnQ1MWh6bHo2MVNlRUJ4ZWMKLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0="
    }
}

关于

  • 强调下,感谢春哥,https://github.com/mtourne/ngx_lua_ssl !!!
  • 关于我:从事安全、架构相关工作。
  • Copyright and License GPL(GNU General Public License) Copyright (C) 2011-2016, by zj

About

using openresty build dynamic upstream [balancer]

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published