如何从nginx服务的HTML代码,也ping相同的请求上游服务器?

我们使用在一个主机上运行的nginx作为在另一个主机上运行在tomcat上的java servlet的代理。

我们想要做的是说一个请求http://a.xyz.com/a/b?q1=v1&q2=v2 ,我们想从一个HTML代码服务于客户端从Nginx,并ping上游服务器http:/ / / ipaddress [冒号]端口/ a / b?q1 = v1&q2 = v2 。 在ping上游服务器时,uripath和查询参数保持不变。

我已经想到了如何单独完成这两项任务,但是我无法想象如何将这两项任务一起完成同一个请求。

这是我的conf文件目前如何看。如果条件如下,我写了两个。 如果单独使用条件1,我可以提供HTML代码。 在单独使用条件2的情况下,我可以ping上游服务器,在这种情况下,上游服务器以200 OK发送响应,通过nginx发送给客户端。 有人能帮助他们一起实现他们吗? Nginx应该提供html代码并释放客户端,然后ping上游服务器,这将返回200 OK到nginx哪些nginx可以吞下去。

upstream u_server { server <ip_address>:8080; } server { listen 80; server_name a.xyz.com; # if condition 1 if ($host = "a.xyz.com") { rewrite ^ /pqr.html last; } # if condition 2 if ($host = "a.xyz.com") { set $upserver="u_server"; } location /pqr.html { root /opt/mydir/html; } location / { proxy_pass http://$upserver; } } 

这可以通过至less两种方法(都与第三方模块)来完成。

A) lua模块 。

 upstream upserver { server <ip_address>:8080; } server { listen 80; server_name a.xyz.com; location / { root /opt/mydir/html; access_by_lua ' local res = ngx.location.capture("/ping") return '; } location = /ping { proxy_pass http://upserver; } } 

B) auth_request模块 。 您的ping后端务必返回“200 Ok”响应,否则客户端将收到“403拒绝访问”,而不是静态文件内容。

 upstream upserver { server <ip_address>:8080; } server { listen 80; server_name a.xyz.com; location / { root /opt/mydir/html; auth_request /ping; } location = /ping { proxy_pass http://upserver; } }