我需要一些帮助来理解 /var/log/nginx/error 日志文件中的以下日志语句。
2016/07/28 14:06:05 [错误] 7255#7255: *712 open() “/usr/share/www/proj/check_proxy” 失败 (2: 没有此文件或目录),客户端:180.97.xxx.xxx,服务器:localhost,请求:“GEThttp://180.163.xxx.xxx/check_proxyHTTP/1.1”,主机:“180.163.xxx.xxx”
如何解读上述日志消息?特别是什么是服务器,什么是主机?每当我尝试访问网站时,日志消息中的 GET 值都以斜杠 (/) 字符开头。但在上面的日志消息中,它显示一个 URL。我如何重现上述日志消息?
上述日志消息中有趣的一点是,除了 GET 之外,主机 IP 与 URL 中的 IP 地址相同。nginx conf 文件不包含 localhost 服务器名称,但它出现在上述日志消息中的服务器值中。所有其他日志消息都将主机显示为机器的 IP,将服务器显示为 nginx 配置文件中的 server_name。这只是基于我有限的知识的一些观察。
首先十分感谢。
答案1
日志行中的部分server
是处理请求的 nginx 虚拟主机服务器名。
如果您没有server
带有的块server_name localhost
,那么它会使用带有属性的任何server
块default_server
。
如果你的 nginx 配置中没有default_server
定义,我假设 nginx 会放入localhost
这种情况。
host
是 HTTP 请求中存在的 HTTP/1.1 标头的值Host
。如果您使用 IP 地址发出请求,则它与您在 URL 中使用的 IP 地址相同。
这只是一个有根据的猜测,但事实上该request
部分包含实际请求的完整 URL 可能是因为请求命中了default_server
,因此记录完整的请求 URL 以便知道请求了哪个主机名很有用。