网关主入口设计

为网关起个名字:fago

fago关框架,也会有个主入口;

nginx配置文件的入口,调用fago网关的入口

一)nginx的conf配置

fago-nginx.conf

#user  nobody;
worker_processes  1;

error_log  logs/error.log;
error_log  logs/debug.log  debug;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  text/html;
	charset utf-8;
    sendfile        on;
    keepalive_timeout  65;
	
	resolver 8.8.8.8;
	
	upstream default_upstream {
        server localhost:8080;
    }
	
	#----------------------------fago configuration-----------------------------
    lua_package_path '/usr/local/lua/?.lua;;';
    lua_code_cache on;
		
	lua_shared_dict shared_ip_blacklist 1m; #定义ip_blacklist 本地缓存变量
		
	init_by_lua_block {
        local fago = require("fago.fago")
        fago.init()
        context = {
            fago = fago
        }
    }

    init_worker_by_lua_block {
        local fago = context.fago
        fago.init_worker()
    }
	
    server {
        listen       80;
        #server_name  www.server1.com;
		
		location = /favicon.ico {
            log_not_found off;
            access_log off;
        }
		
		location / {
            set $upstream_host $host;
            set $upstream_url 'http://default_upstream';

            rewrite_by_lua_block {
                local fago = context.fago
                fago.redirect()
                fago.rewrite()
            }

            access_by_lua_block {
                local fago = context.fago
                fago.access()
            }

            # proxy
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Scheme $scheme;
            proxy_set_header Host $upstream_host;
            proxy_pass $upstream_url;


            header_filter_by_lua_block {
                local fago = context.fago
                fago.header_filter()
            }

            body_filter_by_lua_block {
                local fago = context.fago
                fago.body_filter()
            }

            log_by_lua_block {
                local fago = context.fago
                fago.log()
            }
        }
    }
	
	server {  
        listen 8080;  
  
        location /world {  
            echo "hello world";  
        }  
    }  
}

二)fago主入口

/usr/local/openresty/lualib/fago/fago.lua

启动 nginx -c /usr/local/openresty/nginx/conf/fago-nginx.conf

访问http://192.168.40.110/world

查看nginx日志:

Last updated

Was this helpful?