如何确定哪个请求nginx发送到代理服务器?

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

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

根据您的configuration,可能很容易实现。 这是我的解决scheme…

服务器{
   server_name domainname.com;
   root / path / to / files;
   #index index.php index.html;

   #loggingaccess.log中的所有请求
   access_log /some/path/such/as/var/log/nginx/access.log;

  位置 / {
     try_files $ uri $ uri @thin;
   }

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

     #proxy-access.log中特定于代理的日志logging
     access_log /some/path/such/as/var/log/nginx/proxy-access.log;
   }
 }

希望这可以帮助!

创build一个包含$upstream_response_time的自定义日志格式 – 如果你的后端服务它,你应该得到一个毫秒数来得到一个响应,如果nginx在内部服务它,你应该得到一个短划线

这是一个非常肮脏的黑客攻击,但要使Nginx或Thin对这些文件没有读取权限。 :)这样你就可以找出哪一个出错了,因此读/提供一个文件。

或者,您应该可以将自定义标题添加到提供静态文件的configuration块。 那么你将能够看到头的存在与否。