日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx的proxy_pass及upstream的小型负载均衡

發布時間:2024/1/8 Nginx 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx的proxy_pass及upstream的小型负载均衡 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

proxy_pass

Nginx的proxy_pass將請求代理到其他的后端服務器。例如

listen 9999;server_name wyc.com;location /test/aaa {content_by_lua_block {ngx.say('new:9999/test/aaa')}}location /test/aaa/bbb {content_by_lua_block {ngx.say('new:9999/test/aaa/bbb')}}location /ttt {proxy_pass http://wyc.com:9999/test;}

上面請求http://localhost:9999/ttt/aaa/bbb,會匹配到/ttt進入,規則是去掉ttt,將后面的url和參數拼接到proxy_pass的后面,于是返回的new:9999/test/aaa/bbb,即location為/test/aaa/bbb的內容。

  • 請求http://wychao.com:8888/user/wyc/wyc/aaa?aa=11&bb=22 (匹配到域名和端口和對應的location為/user/wyc,然后將后面的/wyc/aaa?aa=11&bb=22proxy_pass到需要代理到的服務,正好匹配到另一個server的location里)
server {server_name wychao.com;listen 8888;location /user/wyc {proxy_pass http://aaa.wyc.com:8888/user;}location = /user/name {echo $request_uri;}}server {server_name aaa.wyc.com;listen 8888;location /user/wyc {echo $request_uri;}}

結果:/user/wyc/aaa?aa=11&bb=22

urllocationproxy_passtarget_url
aaa.com/aa/bb?a=1/aahttp://bbb.com/cchttp://bbb.com/cc/bb?a=1
  • 即最終代理到的url:將請求的uri去掉匹配到的location部分,其余部分拼接到proxy_pass后面,包括query_string部分。

如果proxy_pass http://aaa.wyc.com:8888不帶url,則是將匹配到的url附加到host之后。


upstream

upstream可以做簡單的負載均衡等,下面以百度為例,upstream在http段,

upstream search {server 180.149.132.47;}server {# List portlisten 8888;server_name wyc.com;location /s {#add_header 'Access-Control-Allow-Credentials' 'true';proxy_redirect off;proxy_set_header Host "www.baidu.com";proxy_set_header X-Real-Ip $remote_addr;proxy_set_header X-Forwarded-for $remote_addr;proxy_pass http://search;}}

上面請求域名wyc.com,端口8888,location將代理到search的upstream中,訪問:

http://wyc.com:8888/s?wd=nba

http://baidu.com/s?wd=nba
的結果是一樣的

upstream支持多種負載均衡,下面一個最簡單的根據權重分配:

#server1:server {server_name wwyycc.com;listen 8888;location /user {content_by_lua_block {ngx.say('wwyycc.com:host')}}}#server2:server {server_name wwyycc.com;listen 9999;location /user {echo "user wwyycc user";}}#負載:server3:server_name:wyc.com 端口:8888upstream manageserver {server wwyycc.com:8888 weight=2;server wwyycc.com:9999;}location /user {#add_header 'Access-Control-Allow-Credentials' 'true';proxy_redirect off;proxy_set_header Host "wwyycc.com";proxy_set_header X-Real-Ip $remote_addr;proxy_set_header X-Forwarded-for $remote_addr;proxy_pass http://manageserver;}

請求http://wyc.com:8888/user,結果按照順序返回兩次server1的結果,再返回一次server2的結果。(上面的例子要成功執行需要nginx的resolver解析,詳細見另一篇文章http://www.cnblogs.com/mentalidade/p/6934162.html),echo等指令也是第三方模塊echo-nginx-module,這些都是openresty自帶的。

轉載于:https://www.cnblogs.com/mentalidade/p/7028890.html

總結

以上是生活随笔為你收集整理的Nginx的proxy_pass及upstream的小型负载均衡的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。