Module Proxy保持了传统HTTP后端的服务能力,这点和Nginx反向代理相似。下面是完整的Module Proxy的完整的配置文件,我们结合配置文件说明:
name = "module proxy"
version = "0.1"
[server]
port = 80 # http侦听端口
root_path = "D:/TMP/root_path/" # 网站根路径
chunked_size = 10240000 # chunked方式最小字节
[log]
level = "debug" # 日志级别,分为 error warn info debug 四种
[module]
module_html = [ # 本地html模块
{module = "vue", path = "D:/TMP/html/vue_html"},
]
module_http = [ # http反向代理模块
{module = "docs", proxy_pass = "http://127.0.0.1:8080" },
{module = "examples", proxy_pass = "http://127.0.0.1:8080" },
]
module_socket = [ # socket代理模块
{module = "socket", ip = "127.0.0.1", port = 21230 },
{module = "socket1", ip = "127.0.0.1", port = 21231 },
]
在配置文件 [module] 部分,定义了三种模块:本地html模块(静态代理)、http反向代理模块、和socket代理模块。
静态代理
静态代理在Module Proxy内部分为两种配置:
-- 有模块 例如访问 http://<module_proxy_ip>:80/vue/index.html 时,Module Proxy会根据配置文件,去读取D:/TMP/html/vue_html/index.html 。
-- 无模块 例如访问 http://<module_proxy_ip>:80/index.html 时,无模块配置,Module Proxy会访问“根”目录中的 D:/TMP/root_path/index.html 。
这两种配置,在Module Proxy中的实现机制是一样的。有模块的静态代理可以配置多个,无模块代表“根”只能有一个。
[server] 中的chunked_size配置的字节数,只对静态代理起作用。小于chunked_size的文件,Module Proxy会一次性的读取所有文件内容,再发送给浏览器;超过chunked_size的文件,Module Proxy会读取一段发送一段。chunked是HTTP1.1协议中的一种传输形式,超大文件应该使用chunked方式,这样能避免在服务端占用过多内存。用户对chunked的使用感知常常发生在文件下载中,如果下载文件时不知其大小,很可能就是chunked方式。
http反向代理
在研发人员的世界中,反向代理比正向代理更加常见,Module Proxy的反向代理是符合研发世界观的,因此这里无需多讲,演示而已:
1)在部署 Module Proxy的同一天机器上,下载并启动默认配置的Tomcat服务。
2)浏览器访问 http://<module_proxy_ip>:80/examples/index.html ,根据模块配置请求被转发到 http://127.0.0.1:8080/examples/index.html
3)浏览器访问 http://<module_proxy_ip>:80/docs/index.html ,根据模块配置请求被转发到 http://127.0.0.1:8080/docs/index.html