From b69d850757a7a8c4ff9a368df004a3cfaaf9f1e4 Mon Sep 17 00:00:00 2001 From: Zhaoxing Date: Thu, 8 Sep 2016 23:20:06 +0800 Subject: Issue-id: OCS-9 Change-Id: I73c18bdda656c43687810930338f9a949ed08848 Signed-off-by: Zhaoxing --- msb-core/openresty-ext/pom.xml | 194 +++++++++---------- .../resources/openresty/nginx/conf/nginx.conf | 212 +++------------------ .../resources/openresty/nginx/luaext/auth.lua | 15 -- .../openresty/nginx/luaext/customrouter.lua | 194 +++++++++++++++++++ .../resources/openresty/nginx/luaext/iui_auth.lua | 41 ---- .../resources/openresty/nginx/luaext/login.lua | 9 - .../resources/openresty/nginx/luaext/logout.lua | 6 - .../openresty/nginx/luaext/make_authed.lua | 44 ----- .../openresty/nginx/luaext/openoadminrouter.lua | 110 +++++++++++ .../openresty/nginx/luaext/openoapijsonrouter.lua | 110 +++++++++++ .../openresty/nginx/luaext/openoapirouter.lua | 117 ++++++++++++ .../openresty/nginx/luaext/openouirouter.lua | 115 +++++++++++ .../openresty/nginx/luaext/serviceaccess.lua | 15 -- .../openresty/nginx/luaext/setnocacheflag.lua | 29 +++ .../openresty/nginx/sites-enabled/openomsb.conf | 150 +++++++++++++++ .../src/assembly/resources/openresty/reload.sh | 7 +- .../src/assembly/resources/openresty/run.bat | 105 +++++----- .../src/assembly/resources/openresty/run.sh | 7 +- .../src/assembly/resources/openresty/run4docker.sh | 39 ---- .../src/assembly/resources/openresty/stop.bat | 105 +++++----- .../src/assembly/resources/openresty/stop.sh | 8 +- 21 files changed, 1075 insertions(+), 557 deletions(-) delete mode 100644 msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/auth.lua create mode 100644 msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/customrouter.lua delete mode 100644 msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/iui_auth.lua delete mode 100644 msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/login.lua delete mode 100644 msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/logout.lua delete mode 100644 msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/make_authed.lua create mode 100644 msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/openoadminrouter.lua create mode 100644 msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/openoapijsonrouter.lua create mode 100644 msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/openoapirouter.lua create mode 100644 msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/openouirouter.lua delete mode 100644 msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/serviceaccess.lua create mode 100644 msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/setnocacheflag.lua create mode 100644 msb-core/openresty-ext/src/assembly/resources/openresty/nginx/sites-enabled/openomsb.conf delete mode 100644 msb-core/openresty-ext/src/assembly/resources/openresty/run4docker.sh (limited to 'msb-core/openresty-ext') diff --git a/msb-core/openresty-ext/pom.xml b/msb-core/openresty-ext/pom.xml index 1db2516..09b6bca 100644 --- a/msb-core/openresty-ext/pom.xml +++ b/msb-core/openresty-ext/pom.xml @@ -1,96 +1,98 @@ - - - - - - org.openo.common-services.microservice-bus - msb-core-parent - 1.0.0-SNAPSHOT - - - - 4.0.0 - openresty-ext - 1.0.0-SNAPSHOT - openo/msb/msb-core/openresty-ext - pom - - - target/assembly - openresty-ext - - - - - - maven-resources-plugin - - true - - - - copy-resources - process-resources - - copy-resources - - - ${outputdir} - - - src/assembly/resources/ - false - - **/* - - - - true - - - - - - - org.apache.maven.plugins - maven-antrun-plugin - - - distribution - package - - run - - - - - - - - - - - - - - - - - - + + + + + org.openo.common-services.microservice-bus + msb-core-parent + 1.0.0-SNAPSHOT + + + + 4.0.0 + openresty-ext + 1.0.0-SNAPSHOT + openo/msb/msb-core/openresty-ext + pom + + + target/assembly + openresty-ext + + + + + + maven-resources-plugin + + true + + + + copy-resources + process-resources + + copy-resources + + + ${outputdir} + + + src/assembly/resources/ + false + + **/* + + + + true + + + + + + + org.apache.maven.plugins + maven-antrun-plugin + + + distribution + package + + run + + + + + + + + + + + + + + + + + + diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/conf/nginx.conf b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/conf/nginx.conf index 9a2db3f..c5dc770 100644 --- a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/conf/nginx.conf +++ b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/conf/nginx.conf @@ -1,3 +1,22 @@ +# +# Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Author: Zhaoxing Meng +# email: meng.zhaoxing1@zte.com.cn +# + #user xfs xfs; worker_processes 1; @@ -9,64 +28,6 @@ events { } http { - include mime.types; - - upstream iui { - server 127.0.0.1:8202; - } - - upstream nsoc { - server 127.0.0.1:8203; - } - - upstream roc { - server 127.0.0.1:8204; - } - - upstream umc { - server 127.0.0.1:8205; - } - - upstream ssh { - server 127.0.0.1:8209; - } - - upstream yamlparser { - server 127.0.0.1:8210; - } - - upstream dac { - server 127.0.0.1:8206; - } - - upstream cmcc { - server 127.0.0.1:8207; - } - - upstream tacker { - server 127.0.0.1:8208; - } - - upstream winery { - server 127.0.0.1:8080; - } - - upstream etsi { - server 127.0.0.1:8211; - } - - upstream openstackadapter { - server 127.0.0.1:8217; - } - - upstream vimadapter { - server 127.0.0.1:8218; - } - - upstream odlsdn { - server 127.0.0.1:8216; - } - # Basic Settings default_type application/octet-stream; sendfile on; @@ -84,144 +45,27 @@ http { proxy_send_timeout 120s; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header Host $host:$server_port; + proxy_set_header Host $host; proxy_buffers 4 32k; #set the nginx_cache parameter - #proxy_cache_path temp/proxy_cache levels=1:2 keys_zone=nginx_cache:10m inactive=1d max_size=100m; + proxy_cache_path temp/proxy_cache levels=1:2 keys_zone=nginx_cache:1024m inactive=1d max_size=10g; # Logging access_log off; # Lua settings lua_package_path "$prefix/../lualib/?.lua;;"; - lua_package_cpath "$prefix/../lualib/?.so;;"; lua_shared_dict ceryx 10M; lua_code_cache on; - - server { - listen 80; - default_type text/html; - - location = / { - rewrite ^ /iui/framework redirect; - } - - location = /openo { - rewrite ^ /iui/framework redirect; - } - - location = /iui/openo { - rewrite ^ /iui/framework redirect; - } - - location = /iui/framework/login.html { - access_by_lua_file luaext/iui_auth.lua; - proxy_pass http://iui; - } - - location = /api/uiframe/v1/login { - rewrite ^ /api/umcsm/v1/login break; - proxy_pass http://umc; - header_filter_by_lua_file luaext/login.lua; - } - - location = /api/uiframe/v1/loginOut { - access_by_lua_file luaext/logout.lua; - rewrite ^ /api/umcsm/v1/loginOut break; - proxy_pass http://umc; - } - - location = /api/hsif/v1/authentication { - access_by_lua_file luaext/make_authed.lua; - } - - location /iui { - access_by_lua_file luaext/iui_auth.lua; - proxy_pass http://iui; - } - - location ~ ^/api/(?:vim|nsoc)/v1 { - access_by_lua_file luaext/auth.lua; - proxy_pass http://nsoc; - } - - location = /api/nsoc/v1/vnfgrantinfo { - rewrite ^ /api/vim/v1/vnfgrantinfo break; - access_by_lua_file luaext/auth.lua; - proxy_pass http://nsoc; - } - - location /api/nsocnotification/v1 { - rewrite ^/api/nsocnotification/v1/(.*) /nsocnotification/v1/$1 break; - access_by_lua_file luaext/auth.lua; - proxy_pass http://nsoc; - } - - location ~ ^/api/(?:roc|rocnotification)/v1 { - access_by_lua_file luaext/auth.lua; - proxy_pass http://roc; - } - - location /api/uiframe/v1 { - rewrite ^/api/uiframe/v1/(.*) /api/umcsm/v1/$1 break; - access_by_lua_file luaext/iui_auth.lua; - proxy_pass http://umc; - } - - location ~ ^/api/umc(?:pm|fm|drill|sm|monitor)/v1 { - access_by_lua_file luaext/auth.lua; - proxy_pass http://umc; - } - - location ~ ^/api/ssh/v1 { - proxy_pass http://ssh; - } - - location ~ ^/api/yamlparser/v1 { - proxy_pass http://yamlparser; - } - - location ~ ^/api/(?:dac|dacnotification)/v1 { - access_by_lua_file luaext/auth.lua; - proxy_pass http://dac; - } - - location /api/cmccia/v1 { - access_by_lua_file luaext/auth.lua; - proxy_pass http://cmcc; - } - - location /api/tackeria/v1 { - access_by_lua_file luaext/auth.lua; - proxy_pass http://tacker; - } - location /winery { - access_by_lua_file luaext/auth.lua; - proxy_pass http://winery; - } - - location = /api/microservices/v1/apiRoute { - access_by_lua_file luaext/auth.lua; - content_by_lua_file luaext/serviceaccess.lua; - } - - location /api/umcswagger/v1 { - rewrite ^/api/umcswagger/v1/(.*) /api/$1 break; - access_by_lua_file luaext/auth.lua; - proxy_pass http://umc; - } - - location /api/etsiia/v1 { - access_by_lua_file luaext/auth.lua; - proxy_pass http://etsi; - } + # see https://github.com/openresty/lua-resty-core + #init_by_lua ' + # require "resty.core" + #'; - location /api/odlsdnia/v1 { - access_by_lua_file luaext/auth.lua; - proxy_pass http://odlsdn; - } - } + # Includes + include mime.types; + include ../sites-enabled/*.conf; } diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/auth.lua b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/auth.lua deleted file mode 100644 index 067c277..0000000 --- a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/auth.lua +++ /dev/null @@ -1,15 +0,0 @@ -local cache = ngx.shared.ceryx -local client_ip = ngx.var.remote_addr -local host = ngx.var.host -if client_ip == '127.0.0.1' or client_ip == host or client_ip == ngx.var.server_addr then - return -end -local succ, err, forcible = cache:replace(client_ip, "place_holder", 3600) -if not succ then - if err == 'not found' then - ngx.log(ngx.WARN, "access record not found for "..client_ip) - ngx.exit(401) - else - ngx.log(ngx.WARN, err) - end -end \ No newline at end of file diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/customrouter.lua b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/customrouter.lua new file mode 100644 index 0000000..d1f476a --- /dev/null +++ b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/customrouter.lua @@ -0,0 +1,194 @@ +--[[ + + Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Author: Zhaoxing Meng + email: meng.zhaoxing1@zte.com.cn + +]] +-- put red into the connection pool of size 100, +-- with 10 seconds max idle time +local function close_redis(red) + if not red then + return + end + --release connection to the pool + local pool_max_idle_time = 10000 + local pool_size = 100 + local ok, err = red:set_keepalive(pool_max_idle_time, pool_size) + if not ok then + ngx.log(ngx.ERR, "set keepalive error:", err) + end + return +end + +local function query_ipurl_updatecache(red,key) + local keyprefix = "msb:routing:custom:"..key + + + local infokey=keyprefix..":info" + -- first of all check whether the status is 1(enabled) + local status = red:hget(infokey,"status") + if not (status=="1") then + ngx.log(ngx.WARN, key.."is disabled.status=", status) + return nil + end + + -- Try to get url for key + local url, err = red:hget(infokey,"url") + ngx.log(ngx.WARN, "==url:", url) + if not url or url == ngx.null then + return nil + end + + -- Try to get ip:port for key + local serverkey=keyprefix..":lb:server1" + local server, err = red:hget(serverkey,"ip")..":"..red:hget(serverkey,"port") + ngx.log(ngx.WARN, "==server:", server) + if not server or server == ngx.null then + return nil + end + + -- get the local cache + local cache = ngx.shared.ceryx + local uri = ngx.var.uri + -- Save found key to local cache for 5 seconds + cache:set("custom:key:"..uri,key,5) + cache:set("custom:server:"..uri,server,5) + cache:set("custom:url:"..uri,url,5) + + ngx.var.key = key + ngx.var.server = server + ngx.var.url = url + return true +end + +local function query_allkeys_updatecache(red) + -- Try to get all keys start with "msb:routing:custom:" + local allkeys, err = red:keys("msb:routing:custom:*") + if not allkeys or allkeys == ngx.null then + ngx.log(ngx.ERR,err) + return "" + end + --把所有键值处理后放到集合中,去除重复 + local key_set={} + for key, value in ipairs(allkeys) do + name = string.gsub(string.gsub(string.gsub(value,"msb:routing:custom:",""),":info",""),":lb:server1","") + key_set[name]=true + end + --取出所有的�?放到table中准备排�? + local key_table = {} + local index = 1 + for key,_ in pairs(key_set) do + --为了避免效率问题,暂时不用table.insert() + --table.insert(key_table,key) + key_table[index] = key + index = index + 1 + end + --对所有键进行倒序排序,用于实现最长前缀匹配 + table.sort(key_table, function (a, b) + return a > b + end) + + local servicenames = "" + local delimiter = "<>" + for i=1,#key_table do + servicenames=servicenames..key_table[i]..delimiter + end + + -- get the local cache + local cache = ngx.shared.ceryx + -- Save all keys to local cache for 30 seconds(0.5 minutes) + cache:set("customrouter:allkeys", servicenames, 30) + return servicenames; +end + +local function query_router_info() + local uri = ngx.var.uri + ngx.log(ngx.WARN, "==uri:", uri) + + -- Check if key exists in local cache + local cache = ngx.shared.ceryx + local key, flags = cache:get("custom:key:"..uri) + local server, flags = cache:get("custom:server:"..uri) + local url, flags = cache:get("custom:url:"..uri) + if key and server and url then + ngx.var.key = key + ngx.var.server = server + ngx.var.url = url + ngx.log(ngx.WARN, "==using custom cache:", key.."&&"..server.."&&"..url) + return + end + + local redis = require "resty.redis" + local red = redis:new() + red:set_timeout(1000) -- 1000 ms + local redis_host = "127.0.0.1" + local redis_port = 6379 + local res, err = red:connect(redis_host, redis_port) + + -- Return if could not connect to Redis + if not res then + ngx.log(ngx.ERR, "connect to redis error:", err) + return + end + + -- Check if all servicenames exists in local cache + local servicenames, flags = cache:get("customrouter:allkeys") + if servicenames then + ngx.log(ngx.WARN,"==get all keys from cache:",servicenames) + else + servicenames = query_allkeys_updatecache(red) + end + + local delimiter = "<>" + -- '.-' 表示最短匹�? + for key in string.gmatch(servicenames,"(.-)"..delimiter) do + ngx.log(ngx.WARN, "==key_table key:", key) + local from, to, err = ngx.re.find(uri, "^"..key.."(/(.*))?$", "jo") + --判断key是否为输入uri�?前缀" + if from then + ngx.log(ngx.WARN,"Matched! start-end:",from,"-",to) + local result = query_ipurl_updatecache(red,key) + if result then + break + end + else + ngx.log(ngx.WARN,"not Matched") + if err then + ngx.log(ngx.WARN,"ngx.re.find throw error: ",err) + return + end + end + end + + return close_redis(red) +end + +local function rewrite_router_url() + local server=ngx.var.server + if server=="fallback" then + ngx.status = ngx.HTTP_NOT_FOUND + ngx.exit(ngx.status) + end + local url=ngx.var.url + local key=ngx.var.key + local rewriteduri = ngx.re.sub(ngx.var.uri, "^"..key.."(.*)", url.."$1", "o") + ngx.log(ngx.WARN, "==rewrited uri:", rewriteduri) + ngx.req.set_uri(rewriteduri) +end + +query_router_info() +rewrite_router_url() \ No newline at end of file diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/iui_auth.lua b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/iui_auth.lua deleted file mode 100644 index dd7b2ed..0000000 --- a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/iui_auth.lua +++ /dev/null @@ -1,41 +0,0 @@ -local cache = ngx.shared.ceryx -local client_ip = ngx.var.remote_addr -local uri = ngx.var.uri -if uri == "/iui/framework/login.html" then - local value, flags = cache:get(client_ip) - if not value then - return - else - ngx.redirect("/iui/framework/main-page.html") - end -end - -local referer = ngx.var.http_referer -local refererList = { - "/iui/framework/login.html", - "/iui/framework/css/login.css", - "/iui/component/thirdparty/font%-awesome/css/font%-awesome.min.css", - "/iui/framework/css/style%-custom.css" -} -local function referer_matches(t, r) - for k,_ in pairs(t) do - if string.match(r, t[k]) then - return true - end - end - return false -end - -if referer and referer_matches(refererList, referer) then - return -end - -local succ, err, forcible = cache:replace(client_ip, "place_holder", 3600) -if not succ then - if err == 'not found' then - ngx.log(ngx.WARN, "access record not found for "..client_ip..",redirect to login page") - ngx.redirect("/iui/framework/login.html") - else - ngx.log(ngx.WARN, err) - end -end \ No newline at end of file diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/login.lua b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/login.lua deleted file mode 100644 index 7d6bfd8..0000000 --- a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/login.lua +++ /dev/null @@ -1,9 +0,0 @@ -local h = ngx.resp.get_headers() -if h["openoauth"] and h["openoauth"] == "true" then - local cache = ngx.shared.ceryx - local client_ip = ngx.var.remote_addr - local succ, err, forcible = cache:set(client_ip, "place_holder", 3600) - if not succ then - ngx.log(ngx.WARN, err) - end -end \ No newline at end of file diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/logout.lua b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/logout.lua deleted file mode 100644 index e23f787..0000000 --- a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/logout.lua +++ /dev/null @@ -1,6 +0,0 @@ -local cache = ngx.shared.ceryx -local client_ip = ngx.var.remote_addr -local succ, err, forcible = cache:delete(client_ip) -if not succ then - ngx.log(ngx.WARN, err) -end \ No newline at end of file diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/make_authed.lua b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/make_authed.lua deleted file mode 100644 index c4c2d78..0000000 --- a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/make_authed.lua +++ /dev/null @@ -1,44 +0,0 @@ -function ipValidator(ip) - local chunks = {ip:match("(%d+)%.(%d+)%.(%d+)%.(%d+)")} - if #chunks == 4 then - for _,v in pairs(chunks) do - if tonumber(v) > 255 then return R.STRING end - end - return true - end - local chunks = {ip:match(("([a-fA-F0-9]*):"):rep(8):gsub(":$","$"))} - if #chunks == 8 then - for _,v in pairs(chunks) do - if #v > 0 and tonumber(v, 16) > 65535 then return R.STRING end - end - return true - end - return false -end - -if ngx.req.get_method() == "POST" then - ngx.req.read_body() - local body = ngx.req.get_body_data() - local json = require('cjson') - local tab = json.decode(body) - local ip = tab["passIp"] - if not ip then - ngx.log(ngx.WARN, "ip is nil.") - ngx.exit(500) - end - if ipValidator(ip) then - local cache = ngx.shared.ceryx - local succ, err, forcible = cache:set(ip, "place_holder", 3600) - if not succ then - ngx.log(ngx.WARN, err) - ngx.exit(500) - end - else - ngx.log(ngx.WARN, "not a valid ip.") - ngx.exit(500) - end - ngx.exit(201) -else - ngx.log(ngx.WARN, "not a POST request.") - ngx.exit(500) -end \ No newline at end of file diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/openoadminrouter.lua b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/openoadminrouter.lua new file mode 100644 index 0000000..d2f0895 --- /dev/null +++ b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/openoadminrouter.lua @@ -0,0 +1,110 @@ +--[[ + + Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Author: Zhaoxing Meng + email: meng.zhaoxing1@zte.com.cn + +]] +-- put red into the connection pool of size 100, +-- with 10 seconds max idle time +local function close_redis(red) + if not red then + return + end + --release connection to the pool + local pool_max_idle_time = 10000 + local pool_size = 100 + local ok, err = red:set_keepalive(pool_max_idle_time, pool_size) + if not ok then + ngx.log(ngx.ERR, "set keepalive error:", err) + end + return +end + +local function rewrite_admin_url() + local apiserver=ngx.var.apiserver + if apiserver=="fallback" then + ngx.status = ngx.HTTP_NOT_FOUND + ngx.exit(ngx.status) + end + local adminurl=ngx.var.adminurl + local uri = ngx.re.sub(ngx.var.uri, "^/admin/([^/]+)(/[Vv][^/]*)?(.*)", adminurl.."$3", "o") + ngx.req.set_uri(uri) +end + +local function query_admin_info() + local apiserver = ngx.var.apiserver + local apiname = ngx.var.apiname + local apiversion = ngx.var.apiversion + apiversion=string.sub(apiversion,2,string.len(apiversion)) + + -- Check if key exists in local cache + local cache = ngx.shared.ceryx + local server, flags = cache:get("server:admin:"..apiname..":"..apiversion) + local url, flags = cache:get("url:admin:"..apiname..":"..apiversion) + if server and url then + ngx.var.apiserver = server + ngx.var.adminurl = url + ngx.log(ngx.WARN, "==using admin cache:", server.."&&"..url) + return + end + + local redis = require "resty.redis" + local red = redis:new() + red:set_timeout(1000) -- 1000 ms + local redis_host = "127.0.0.1" + local redis_port = 6379 + local res, err = red:connect(redis_host, redis_port) + + -- Return if could not connect to Redis + if not res then + ngx.log(ngx.ERR, "connect to redis error:", err) + return + end + + -- Construct Redis key + local prefix = "msb" + local keyprefix = prefix..":routing:api:"..apiname..":"..apiversion + + + -- Try to get ip:port for apiname + local serverkey=keyprefix..":lb:server1" + local server, err = red:hget(serverkey,"ip")..":"..red:hget(serverkey,"port") + ngx.log(ngx.WARN, "==adminserver:", server) + if not server or server == ngx.null then + return close_redis(red) + end + + -- Try to get admin url for apiname + local infokey=keyprefix..":info" + local url, err = red:hget(infokey,"metricsUrl") + ngx.log(ngx.WARN, "==adminurl:", url) + if not url or url == ngx.null then + return close_redis(red) + end + + -- Save found key to local cache for 5 seconds + cache:set("server:admin:"..apiname..":"..apiversion, server, 5) + cache:set("url:admin:"..apiname..":"..apiversion, url, 5) + + ngx.log(ngx.WARN, "==admin result:", server.."&&"..url) + ngx.var.apiserver = server + ngx.var.adminurl = url + + return close_redis(red) +end +query_admin_info() +rewrite_admin_url() \ No newline at end of file diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/openoapijsonrouter.lua b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/openoapijsonrouter.lua new file mode 100644 index 0000000..1a061f0 --- /dev/null +++ b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/openoapijsonrouter.lua @@ -0,0 +1,110 @@ +--[[ + + Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Author: Zhaoxing Meng + email: meng.zhaoxing1@zte.com.cn + +]] +-- put red into the connection pool of size 100, +-- with 10 seconds max idle time +local function close_redis(red) + if not red then + return + end + --release connection to the pool + local pool_max_idle_time = 10000 + local pool_size = 100 + local ok, err = red:set_keepalive(pool_max_idle_time, pool_size) + if not ok then + ngx.log(ngx.ERR, "set keepalive error:", err) + end + return +end + +local function rewrite_apijson_url() + local apiserver=ngx.var.apiserver + if apiserver=="fallback" then + ngx.status = ngx.HTTP_NOT_FOUND + ngx.exit(ngx.status) + end + local apijsonurl=ngx.var.apijsonurl + local uri = ngx.re.sub(ngx.var.uri, "^/apijson/([^/]+)(/[Vv][^/]*)?(.*)", apijsonurl.."$3", "o") + ngx.req.set_uri(uri) +end + +local function query_apijson_info() + local apiserver = ngx.var.apiserver + local apiname = ngx.var.apiname + local apiversion = ngx.var.apiversion + apiversion=string.sub(apiversion,2,string.len(apiversion)) + + -- Check if key exists in local cache + local cache = ngx.shared.ceryx + local server, flags = cache:get("server:apijson:"..apiname..":"..apiversion) + local url, flags = cache:get("url:apijson:"..apiname..":"..apiversion) + if server and url then + ngx.var.apiserver = server + ngx.var.apijsonurl = url + ngx.log(ngx.WARN, "==using apijson cache:", server.."&&"..url) + return + end + + local redis = require "resty.redis" + local red = redis:new() + red:set_timeout(1000) -- 1000 ms + local redis_host = "127.0.0.1" + local redis_port = 6379 + local res, err = red:connect(redis_host, redis_port) + + -- Return if could not connect to Redis + if not res then + ngx.log(ngx.ERR, "connect to redis error:", err) + return + end + + -- Construct Redis key + local prefix = "msb" + local keyprefix = prefix..":routing:api:"..apiname..":"..apiversion + + + -- Try to get ip:port for apiname + local serverkey=keyprefix..":lb:server1" + local server, err = red:hget(serverkey,"ip")..":"..red:hget(serverkey,"port") + ngx.log(ngx.WARN, "==apijsonserver:", server) + if not server or server == ngx.null then + return close_redis(red) + end + + -- Try to get apijson url for apiname + local infokey=keyprefix..":info" + local url, err = red:hget(infokey,"apijson") + ngx.log(ngx.WARN, "==apijsonurl:", url) + if not url or url == ngx.null then + return close_redis(red) + end + + -- Save found key to local cache for 5 seconds + cache:set("server:apijson:"..apiname..":"..apiversion, server, 5) + cache:set("url:apijson:"..apiname..":"..apiversion, url, 5) + + ngx.log(ngx.WARN, "==apijson result:", server.."&&"..url) + ngx.var.apiserver = server + ngx.var.apijsonurl = url + + return close_redis(red) +end +query_apijson_info() +rewrite_apijson_url() \ No newline at end of file diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/openoapirouter.lua b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/openoapirouter.lua new file mode 100644 index 0000000..9dec2a9 --- /dev/null +++ b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/openoapirouter.lua @@ -0,0 +1,117 @@ +--[[ + + Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Author: Zhaoxing Meng + email: meng.zhaoxing1@zte.com.cn + +]] +-- put red into the connection pool of size 100, +-- with 10 seconds max idle time +local function close_redis(red) + if not red then + return + end + --release connection to the pool + local pool_max_idle_time = 10000 + local pool_size = 100 + local ok, err = red:set_keepalive(pool_max_idle_time, pool_size) + if not ok then + ngx.log(ngx.ERR, "set keepalive error:", err) + end + return +end + +local function rewrite_api_url() + local apiserver=ngx.var.apiserver + if apiserver=="fallback" then + ngx.status = ngx.HTTP_NOT_FOUND + ngx.exit(ngx.status) + end + local apiurl=ngx.var.apiurl + local uri = ngx.re.sub(ngx.var.uri, "^/openoapi/([^/]+)(/[Vv][^/]*)?(.*)", apiurl.."$3", "o") + ngx.req.set_uri(uri) +end + +local function query_api_info() + local apiserver = ngx.var.apiserver + local apiname = ngx.var.apiname + local apiversion = ngx.var.apiversion + apiversion=string.sub(apiversion,2,string.len(apiversion)) + + -- Check if key exists in local cache + local cache = ngx.shared.ceryx + local server, flags = cache:get("server:api:"..apiname..":"..apiversion) + local url, flags = cache:get("url:api:"..apiname..":"..apiversion) + if server and url then + ngx.var.apiserver = server + ngx.var.apiurl = url + ngx.log(ngx.WARN, "==using api cache:", server.."&&"..url) + return + end + + local redis = require "resty.redis" + local red = redis:new() + red:set_timeout(1000) -- 1000 ms + local redis_host = "127.0.0.1" + local redis_port = 6379 + local res, err = red:connect(redis_host, redis_port) + + -- Return if could not connect to Redis + if not res then + ngx.log(ngx.ERR, "connect to redis error:", err) + return + end + + -- Construct Redis key + local prefix = "msb" + local keyprefix = prefix..":routing:api:"..apiname..":"..apiversion + + local infokey=keyprefix..":info" + -- first of all check whether the status is 1(enabled) + local status = red:hget(infokey,"status") + if not (status=="1") then + ngx.log(ngx.WARN, keyprefix.."is disabled.status=", status) + return close_redis(red) + end + + -- Try to get url for apiname + local url, err = red:hget(infokey,"url") + ngx.log(ngx.WARN, "==url:", url) + if not url or url == ngx.null then + return close_redis(red) + end + + -- Try to get ip:port for apiname + local serverkey=keyprefix..":lb:server1" + local server, err = red:hget(serverkey,"ip")..":"..red:hget(serverkey,"port") + ngx.log(ngx.WARN, "==server:", server) + if not server or server == ngx.null then + return close_redis(red) + end + + + -- Save found key to local cache for 5 seconds + cache:set("server:api:"..apiname..":"..apiversion, server, 5) + cache:set("url:api:"..apiname..":"..apiversion, url, 5) + + ngx.log(ngx.WARN, "==api result:", server.."&&"..url) + ngx.var.apiserver = server + ngx.var.apiurl = url + + return close_redis(red) +end +query_api_info() +rewrite_api_url() \ No newline at end of file diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/openouirouter.lua b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/openouirouter.lua new file mode 100644 index 0000000..736aacd --- /dev/null +++ b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/openouirouter.lua @@ -0,0 +1,115 @@ +--[[ + + Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Author: Zhaoxing Meng + email: meng.zhaoxing1@zte.com.cn + +]] +-- put red into the connection pool of size 100, +-- with 10 seconds max idle time +local function close_redis(red) + if not red then + return + end + --release connection to the pool + local pool_max_idle_time = 10000 + local pool_size = 100 + local ok, err = red:set_keepalive(pool_max_idle_time, pool_size) + if not ok then + ngx.log(ngx.ERR, "set keepalive error:", err) + end + return +end + +local function rewrite_iui_url() + local iuiserver=ngx.var.iuiserver + if iuiserver=="fallback" then + ngx.status = ngx.HTTP_NOT_FOUND + ngx.exit(ngx.status) + end + local iuiurl=ngx.var.iuiurl + local uri = ngx.re.sub(ngx.var.uri, "^/openoui/([^/]+)(.*)", iuiurl.."$2", "o") + ngx.req.set_uri(uri) +end + +local function query_iui_info() + local iuiserver = ngx.var.iuiserver + local iuiname = ngx.var.iuiname + + -- Check if key exists in local cache + local cache = ngx.shared.ceryx + local server, flags = cache:get("server:iui:"..iuiname) + local url, flags = cache:get("url:iui:"..iuiname) + if server and url then + ngx.var.iuiserver = server + ngx.var.iuiurl = url + ngx.log(ngx.WARN, "==using iui cache:", server.."&&"..url) + return + end + + local redis = require "resty.redis" + local red = redis:new() + red:set_timeout(1000) -- 1000 ms + local redis_host = "127.0.0.1" + local redis_port = 6379 + local res, err = red:connect(redis_host, redis_port) + + -- Return if could not connect to Redis + if not res then + ngx.log(ngx.ERR, "connect to redis error:", err) + return + end + + -- Construct Redis key + local prefix = "msb" + local keyprefix = prefix..":routing:iui:"..iuiname + + local infokey=keyprefix..":info" + -- first of all check whether the status is 1(enabled) + local status = red:hget(infokey,"status") + if not (status=="1") then + ngx.log(ngx.WARN, keyprefix.."is disabled.status=", status) + return close_redis(red) + end + + -- Try to get url for iuiname + local url, err = red:hget(infokey,"url") + ngx.log(ngx.WARN, "==url:", url) + if not url or url == ngx.null then + return close_redis(red) + end + + -- Try to get ip:port for iuiname + local serverkey=keyprefix..":lb:server1" + local server, err = red:hget(serverkey,"ip")..":"..red:hget(serverkey,"port") + ngx.log(ngx.WARN, "==server:", server) + if not server or server == ngx.null then + return close_redis(red) + end + + + -- Save found key to local cache for 5 seconds + cache:set("server:iui:"..iuiname, server, 5) + cache:set("url:iui:"..iuiname, url, 5) + + ngx.log(ngx.WARN, "==iui result:", server.."&&"..url) + ngx.var.iuiserver = server + ngx.var.iuiurl = url + + return close_redis(red) +end +query_iui_info() +rewrite_iui_url() \ No newline at end of file diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/serviceaccess.lua b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/serviceaccess.lua deleted file mode 100644 index 1118341..0000000 --- a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/serviceaccess.lua +++ /dev/null @@ -1,15 +0,0 @@ -if ngx.req.get_method() == "GET" then - local services = { - {serviceName="odlsdnia",apiJson="/api/odlsdnia/v1/swagger.json"}, - {serviceName="roc",apiJson="/api/roc/v1/swagger.json"}, - {serviceName="tackeria",apiJson="/api/tackeria/v1/swagger.json"}, - {serviceName="etsi",apiJson="/api/etsiia/v1/swagger.json"} - } - local cjson = require "cjson" - local jsonData = cjson.encode(services) - jsonData = string.gsub(jsonData,"\\/","/") - ngx.print(jsonData) -else - ngx.log(ngx.WARN, "not a GET request.") - ngx.exit(500) -end \ No newline at end of file diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/setnocacheflag.lua b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/setnocacheflag.lua new file mode 100644 index 0000000..e8c75cd --- /dev/null +++ b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/luaext/setnocacheflag.lua @@ -0,0 +1,29 @@ +--[[ + + Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Author: Zhaoxing Meng + email: meng.zhaoxing1@zte.com.cn + +]] +local from, to, err = ngx.re.find(ngx.var.uri, "\\.(gif|jpg|jpeg|png|bmp|ico)$", "jo") +--Based on the request file type to determine whether to cache +if from then + --use cache + return 0 +else + --do not use cache + return 1 +end \ No newline at end of file diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/sites-enabled/openomsb.conf b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/sites-enabled/openomsb.conf new file mode 100644 index 0000000..b529d94 --- /dev/null +++ b/msb-core/openresty-ext/src/assembly/resources/openresty/nginx/sites-enabled/openomsb.conf @@ -0,0 +1,150 @@ +# +# Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Author: Zhaoxing Meng +# email: meng.zhaoxing1@zte.com.cn +# + +server { + listen 80; + default_type text/html; + add_header X-Cache-Status $upstream_cache_status; + + location = /openoui/microservices { + rewrite /openoui/microservices /openoui/microservices/index.html redirect; + } + + location / { + set $server "fallback"; + set $url ""; + set $key ""; + + # Lua files + rewrite_by_lua_file luaext/customrouter.lua; + + proxy_pass http://$server; + } + location ~ ^/api/(.*) { + rewrite ^/api/(.*) /openoapi/$1 last; + } + location ~ ^/iui/(.*) { + rewrite ^/iui/(.*) /openoui/$1 last; + } + location ~ ^/openoapi/([^/]+)(/[Vv][^/]*)?(.*) { + set $apiname $1; + set $apiversion $2; + set $apiserver "fallback"; + set $apiurl ""; + + # Lua files + rewrite_by_lua_file luaext/openoapirouter.lua; + + proxy_pass http://$apiserver; + } + + location ~ ^/openoui/([^/]+)(.*) { + location ~* ^/iui/([^/]+)(.*)\.(?:png|jpg|jpeg|js|css|html|gif|ico|bmp|woff)$ { + set $iuiname $1; + set $iuiparam $2; + set $iuiserver "fallback"; + set $iuiurl ""; + + # Lua files + rewrite_by_lua_file luaext/openouirouter.lua; + + proxy_cache nginx_cache; + proxy_cache_key $host$uri$is_args$args; + proxy_cache_valid 200 304 12h ; + proxy_cache_valid 301 302 1m ; + proxy_cache_valid any 1m ; + expires 12h; + + proxy_pass http://$iuiserver; + } + set $iuiname $1; + set $iuiparam $2; + set $iuiserver "fallback"; + set $iuiurl ""; + + # Lua files + rewrite_by_lua_file luaext/openouirouter.lua; + + proxy_pass http://$iuiserver; + } + + location ~ ^/admin/([^/]+)(/[Vv][^/]*)?(.*) { + set $apiname $1; + set $apiversion $2; + set $apiserver "fallback"; + set $adminurl ""; + + # Lua files + rewrite_by_lua_file luaext/openoadminrouter.lua; + + proxy_pass http://$apiserver; + } + + location ~ ^/apijson/([^/]+)(/[Vv][^/]*)?(.*) { + location ~* ^/apijson/([^/]+)(/[v][^/]*)?(.*)\.(?:png|jpg|jpeg|js|css|html|gif|ico|bmp|woff)$ { + set $apiname $1; + set $apiversion $2; + set $apiserver "fallback"; + set $apijsonurl ""; + + # Lua files + rewrite_by_lua_file luaext/openoapijsonrouter.lua; + + proxy_cache nginx_cache; + proxy_cache_key $host$uri$is_args$args; + proxy_cache_valid 200 304 12h ; + proxy_cache_valid 301 302 1m ; + proxy_cache_valid any 1m ; + expires 12h; + + proxy_pass http://$apiserver; + } + set $apiname $1; + set $apiversion $2; + set $apiserver "fallback"; + set $apijsonurl ""; + + # Lua files + rewrite_by_lua_file luaext/openoapijsonrouter.lua; + + proxy_pass http://$apiserver; + } + + location ~* \.(?:png|jpg|jpeg|js|css|html|gif|ico|bmp|woff)$ { + set $server "fallback"; + set $url ""; + set $key ""; + + # Lua files + rewrite_by_lua_file luaext/customrouter.lua; + + proxy_cache nginx_cache; + proxy_cache_key $host$uri$is_args$args; + proxy_cache_valid 200 304 12h ; + proxy_cache_valid 301 302 1m ; + proxy_cache_valid any 1m ; + expires 12h; + + proxy_pass http://$server; + } + + location = /favicon.ico { + log_not_found off; + } +} \ No newline at end of file diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/reload.sh b/msb-core/openresty-ext/src/assembly/resources/openresty/reload.sh index 240b4b0..644f057 100644 --- a/msb-core/openresty-ext/src/assembly/resources/openresty/reload.sh +++ b/msb-core/openresty-ext/src/assembly/resources/openresty/reload.sh @@ -1,12 +1,12 @@ #!/bin/sh # -# Copyright (C) 2016 ZTE, Inc. and others. All rights reserved. (ZTE) +# Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,9 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# Author: Zhaoxing Meng +# email: meng.zhaoxing1@zte.com.cn +# DIRNAME=`dirname $0` HOME=`cd $DIRNAME/nginx; pwd` diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/run.bat b/msb-core/openresty-ext/src/assembly/resources/openresty/run.bat index 151cad7..17302ce 100644 --- a/msb-core/openresty-ext/src/assembly/resources/openresty/run.bat +++ b/msb-core/openresty-ext/src/assembly/resources/openresty/run.bat @@ -1,52 +1,55 @@ -@REM -@REM Copyright (C) 2016 ZTE, Inc. and others. All rights reserved. (ZTE) -@REM -@REM Licensed under the Apache License, Version 2.0 (the "License"); -@REM you may not use this file except in compliance with the License. -@REM You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, software -@REM distributed under the License is distributed on an "AS IS" BASIS, -@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@REM See the License for the specific language governing permissions and -@REM limitations under the License. -@REM - -@echo off -title openresty-server -@if not "%ECHO%" == "" echo %ECHO% -@if "%OS%" == "Windows_NT" setlocal - -set DIRNAME=. - -if "%OS%" == "Windows_NT" set DIRNAME=%~dp0% - -set ARGS= -:loop -if [%1] == [] goto endloop - set ARGS=%ARGS% %1 - shift - goto loop -:endloop - -set HOME=%DIRNAME%nginx -set _NGINXCMD=%HOME%\nginx.exe - -echo =========== openresty config info ============================================ -echo HOME=%HOME% -echo _NGINXCMD=%_NGINXCMD% -echo =============================================================================== - -cd /d "%HOME%" -echo @WORK_DIR@%HOME% -echo @C_CMD@ "%_NGINXCMD%" -%_NGINXCMD% -IF ERRORLEVEL 1 goto showerror -exit -:showerror -echo WARNING: Error occurred during startup or Server abnormally stopped by way of killing the process,Please check! -echo After checking, press any key to close -pause +@REM +@REM Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved. +@REM +@REM Licensed under the Apache License, Version 2.0 (the "License"); +@REM you may not use this file except in compliance with the License. +@REM You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, software +@REM distributed under the License is distributed on an "AS IS" BASIS, +@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@REM See the License for the specific language governing permissions and +@REM limitations under the License. +@REM +@REM Author: Zhaoxing Meng +@REM email: meng.zhaoxing1@zte.com.cn +@REM + +@echo off +title openresty-server +@if not "%ECHO%" == "" echo %ECHO% +@if "%OS%" == "Windows_NT" setlocal + +set DIRNAME=. + +if "%OS%" == "Windows_NT" set DIRNAME=%~dp0% + +set ARGS= +:loop +if [%1] == [] goto endloop + set ARGS=%ARGS% %1 + shift + goto loop +:endloop + +set HOME=%DIRNAME%nginx +set _NGINXCMD=%HOME%\nginx.exe + +echo =========== openresty config info ============================================ +echo HOME=%HOME% +echo _NGINXCMD=%_NGINXCMD% +echo =============================================================================== + +cd /d "%HOME%" +echo @WORK_DIR@%HOME% +echo @C_CMD@ "%_NGINXCMD%" +%_NGINXCMD% +IF ERRORLEVEL 1 goto showerror +exit +:showerror +echo WARNING: Error occurred during startup or Server abnormally stopped by way of killing the process,Please check! +echo After checking, press any key to close +pause exit \ No newline at end of file diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/run.sh b/msb-core/openresty-ext/src/assembly/resources/openresty/run.sh index 7ac3128..5c7dbc8 100644 --- a/msb-core/openresty-ext/src/assembly/resources/openresty/run.sh +++ b/msb-core/openresty-ext/src/assembly/resources/openresty/run.sh @@ -1,12 +1,12 @@ #!/bin/sh # -# Copyright (C) 2016 ZTE, Inc. and others. All rights reserved. (ZTE) +# Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,9 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# Author: Zhaoxing Meng +# email: meng.zhaoxing1@zte.com.cn +# DIRNAME=`dirname $0` HOME=`cd $DIRNAME/nginx; pwd` diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/run4docker.sh b/msb-core/openresty-ext/src/assembly/resources/openresty/run4docker.sh deleted file mode 100644 index 329dabc..0000000 --- a/msb-core/openresty-ext/src/assembly/resources/openresty/run4docker.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh -# -# Copyright (C) 2016 ZTE, Inc. and others. All rights reserved. (ZTE) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -DIRNAME=`dirname $0` -HOME=`cd $DIRNAME/nginx; pwd` -_NGINXCMD="$HOME/sbin/nginx" - -echo =========== create symbolic link for libluajit-5.1.so.2 ======================================== -LUAJIT_HOME=`cd $DIRNAME/luajit; pwd` -LUAJIT_FILENAME="$LUAJIT_HOME/lib/libluajit-5.1.so.2" -LN_TARGET_FILE='/lib/libluajit-5.1.so.2' -LN_TARGET_FILE64='/lib64/libluajit-5.1.so.2' -ln -s -f $LUAJIT_FILENAME $LN_TARGET_FILE -ln -s -f $LUAJIT_FILENAME $LN_TARGET_FILE64 -echo =============================================================================== - -echo =========== openresty config info ============================================= -echo HOME=$HOME -echo _NGINXCMD=$_NGINXCMD -echo =============================================================================== -cd $HOME; pwd - -echo @WORK_DIR@ $HOME -echo @C_CMD@ $_NGINXCMD -p $HOME/ -$_NGINXCMD -p $HOME/ -g "daemon off;" - diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/stop.bat b/msb-core/openresty-ext/src/assembly/resources/openresty/stop.bat index e5ea581..9fa6522 100644 --- a/msb-core/openresty-ext/src/assembly/resources/openresty/stop.bat +++ b/msb-core/openresty-ext/src/assembly/resources/openresty/stop.bat @@ -1,51 +1,54 @@ -@REM -@REM Copyright (C) 2016 ZTE, Inc. and others. All rights reserved. (ZTE) -@REM -@REM Licensed under the Apache License, Version 2.0 (the "License"); -@REM you may not use this file except in compliance with the License. -@REM You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, software -@REM distributed under the License is distributed on an "AS IS" BASIS, -@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@REM See the License for the specific language governing permissions and -@REM limitations under the License. -@REM - -@echo off -title close openresty-server -@if not "%ECHO%" == "" echo %ECHO% -@if "%OS%" == "Windows_NT" setlocal - -set DIRNAME=. - -if "%OS%" == "Windows_NT" set DIRNAME=%~dp0% - -set ARGS= -:loop -if [%1] == [] goto endloop - set ARGS=%ARGS% %1 - shift - goto loop -:endloop - -set HOME=%DIRNAME%nginx -set _NGINXCMD=%HOME%\nginx.exe - - -echo =========== openresty config info ============================================ -echo HOME=%HOME% -echo _NGINXCMD=%_NGINXCMD% -echo =============================================================================== - - -cd /d "%HOME%" -echo @WORK_DIR@%HOME% -echo @C_CMD@ "%_NGINXCMD% -s stop" - -%_NGINXCMD% -s stop -echo closing signal has been sent,stopping in background,WAIT... -timeout /t 5 /nobreak > nul -exit +@REM +@REM Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved. +@REM +@REM Licensed under the Apache License, Version 2.0 (the "License"); +@REM you may not use this file except in compliance with the License. +@REM You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, software +@REM distributed under the License is distributed on an "AS IS" BASIS, +@REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@REM See the License for the specific language governing permissions and +@REM limitations under the License. +@REM +@REM Author: Zhaoxing Meng +@REM email: meng.zhaoxing1@zte.com.cn +@REM + +@echo off +title close openresty-server +@if not "%ECHO%" == "" echo %ECHO% +@if "%OS%" == "Windows_NT" setlocal + +set DIRNAME=. + +if "%OS%" == "Windows_NT" set DIRNAME=%~dp0% + +set ARGS= +:loop +if [%1] == [] goto endloop + set ARGS=%ARGS% %1 + shift + goto loop +:endloop + +set HOME=%DIRNAME%nginx +set _NGINXCMD=%HOME%\nginx.exe + + +echo =========== openresty config info ============================================ +echo HOME=%HOME% +echo _NGINXCMD=%_NGINXCMD% +echo =============================================================================== + + +cd /d "%HOME%" +echo @WORK_DIR@%HOME% +echo @C_CMD@ "%_NGINXCMD% -s stop" + +%_NGINXCMD% -s stop +echo closing signal has been sent,stopping in background,WAIT... +timeout /t 5 /nobreak > nul +exit diff --git a/msb-core/openresty-ext/src/assembly/resources/openresty/stop.sh b/msb-core/openresty-ext/src/assembly/resources/openresty/stop.sh index 343bff4..c5d0f19 100644 --- a/msb-core/openresty-ext/src/assembly/resources/openresty/stop.sh +++ b/msb-core/openresty-ext/src/assembly/resources/openresty/stop.sh @@ -1,12 +1,12 @@ #!/bin/bash # -# Copyright (C) 2016 ZTE, Inc. and others. All rights reserved. (ZTE) +# Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# Author: Zhaoxing Meng +# email: meng.zhaoxing1@zte.com.cn +# + DIRNAME=`dirname $0` HOME=`cd $DIRNAME/nginx; pwd` _NGINXCMD="$HOME/sbin/nginx" -- cgit 1.2.3-korg