修改Nginx默认的配置文件
# dict for host lua_shared_dict _upstreams 1m; resolver 114.114.114.114 8.8.8.8; server { listen 80 default_server; server_name _; location = /$/cfg/upstream { content_by_lua ' local ups = ngx.req.get_uri_args()["backend"] if ups == nil then ngx.say("usage: curl /$/cfg/upstream?backend=nginx.org") return end schema_idx = string.find(ups, "://") if schema_idx == nil then ups = "http://" + ups end local host = ngx.var.http_host local ups_src = ngx.shared._upstreams:get(host) ngx.log(ngx.WARN, host, " change upstream from ", ups_src, " to ", ups) ngx.shared._upstreams:set(host, ups) ngx.say(host, " change upstream from ", ups_src, " to ", ups) '; } location / { set_by_lua $backend ' local ups = ngx.shared._upstreams:get(ngx.var.http_host) if ups ~= nil then ngx.log(ngx.ERR, "get [", ups,"] from ngx.shared") return ups end return "" '; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass $backend; client_max_body_size 500m; } access_log /var/log/nginx/access.log; }
更新upstream
curl http://yourdomain.com/$/cfg/upstream?backend=nginx.org