如何确定 nginx 向代理发送哪个请求以及它为哪个请求提供服务?

如何确定 nginx 向代理发送哪个请求以及它为哪个请求提供服务?

我目前有 nginx 代理薄的但设置为向 Thin 所服务的应用程序提供静态文件,而不是代理请求。

我想知道如何检查规则是否设置正确。由于 Thin 不记录请求,因此我需要设置 nginx 日志,以便显示哪些请求作为文件提供,哪些请求传递给 Thin。这可能吗?如果可以,怎么做?

答案1

根据您的配置,这可能很容易实现。这是我的解决方案...

服务器 {
  服务器名称域名.com;
  根/路径/到/文件;
  # 索引 index.php index.html;

  # 在 access.log 中记录所有请求
  access_log /某些/路径/例如/var/log/nginx/access.log;

  地点 / {
    尝试文件$uri $uri@thin;
  }

  位置@thin {
    # 将请求传递给 Thin
    #proxy_pass http://thin;

    # proxy-access.log 中的代理特定日志
    access_log /某些/路径/例如/var/log/nginx/proxy-access.log;
  }
}

希望这可以帮助!

答案2

创建一个自定义日志格式,包括$upstream_response_time- 如果你的后端为其提供服务,你应该需要几毫秒才能得到响应,如果 nginx 在内部提供服务,你应该得到一个破折号

答案3

这是一个非常肮脏的黑客行为,但可以使得 Nginx 或 Thin 对这些文件没有读取权限。:) 这样,您将能够找出哪一个出现错误,从而读取/提供文件。

或者,您应该能够向提供静态文件的配置块添加自定义标头。然后您将能够看到标头是否存在。

相关内容