我是 Nginx 新手。
我的要求是我需要进行服务调用,但除了代理传递该请求外,我还需要调用另一个服务/servlet。为此,我决定使用 Echo 模块来使用 echo_subrequest_async 选项。
但是子请求不起作用,甚至简单的 echo print 也不起作用。 echo "hello" 应该去哪里?到客户端(我的猜测)
以下是我的配置(一些注释):
- 这两个服务器都是在我的本地机器上运行的 Java 服务器
- 我的操作系统是 mac osx 版本 10.9.5 3,我从源代码编译了 nginx 1.6.2,并带有模块 pcre 和 http echo
nginx version: nginx/1.6.2
built by clang 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
configure arguments: --with-pcre=/Users/xxxx/project/pcre-8.35 --add-module=/Users/xxxx/project/echo-nginx-module-0.57 --with-cc-opt=-Wno-deprecated-declarations
我使用的 nginx 配置如下
http {
server {
listen 80;
server_name localhost;
# this will handle the initial request
location /messaging-service {
default_type "text/plain";
echo "in the messaging service call";
echo_flush;
echo_subrequest_async GET '/mywebapp/second';
proxy_pass http://localhost:8090/messaging-service/;
}
# this is where the sub request should go,note its different service
location /mywebapp/second {
echo "Going to make another call on different server !!";
echo_flush;
proxy_pass http://localhost:8080/mywebapp/second/;
}
}
}