![如何确定 nginx 向代理发送哪个请求以及它为哪个请求提供服务?](https://linux22.com/image/587904/%E5%A6%82%E4%BD%95%E7%A1%AE%E5%AE%9A%20nginx%20%E5%90%91%E4%BB%A3%E7%90%86%E5%8F%91%E9%80%81%E5%93%AA%E4%B8%AA%E8%AF%B7%E6%B1%82%E4%BB%A5%E5%8F%8A%E5%AE%83%E4%B8%BA%E5%93%AA%E4%B8%AA%E8%AF%B7%E6%B1%82%E6%8F%90%E4%BE%9B%E6%9C%8D%E5%8A%A1%EF%BC%9F.png)
我目前有 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 对这些文件没有读取权限。:) 这样,您将能够找出哪一个出现错误,从而读取/提供文件。
或者,您应该能够向提供静态文件的配置块添加自定义标头。然后您将能够看到标头是否存在。