首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从nginx码头图像记录http请求体?

如何从nginx码头图像记录http请求体?
EN

Stack Overflow用户
提问于 2018-04-06 11:04:47
回答 2查看 10.7K关注 0票数 3

我和nginx有个码头形象。

我想记录收到的请求。

我的船坞-撰写文件:

代码语言:javascript
复制
nginx:
  container_name: my-nginx
image: nginx
ports:
  - "80:80"
  - "443:443"
volumes:
  - ./nginx.conf:/etc/nginx/conf.d/default.conf
  - ./access.log:/var/log/nginx/test.com.access.log

我的nginx配置:

代码语言:javascript
复制
server {
 listen 80;
 listen 443 default_server ssl;
 access_log /var/log/nginx/test.com.access.log;

 location / {
  proxy_pass http://myapp:8080;
  proxy_buffering off;
 }
}

当我试图用以下配置替换access_log指令时:

代码语言:javascript
复制
log_format testlog '$remote_addr - $remote_user [$time_local] '
                   '"$request" $status $bytes_sent '
                   '"$http_referer" "$http_user_agent" "$request_body"';
access_log /var/log/nginx/test.com.access.log testlog;

我得到了:

代码语言:javascript
复制
nginx-reverse-proxy | 2018/04/06 11:50:00 [emerg] 1#1: "log_format" directive is not allowed here in /etc/nginx/conf.d/default.conf:10
nginx-reverse-proxy | nginx: [emerg] "log_format" directive is not allowed here in /etc/nginx/conf.d/default.conf:10
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-06 22:09:18

将log_format放在server{}块之外,因为不是每个指令都可以到达任何地方。简单地说:

代码语言:javascript
复制
log_format testlog '$remote_addr - $remote_user [$time_local] '
               '"$request" $status $bytes_sent '
               '"$http_referer" "$http_user_agent" "$request_body"';

server {
 listen 80;
 listen 443 default_server ssl;
 access_log /var/log/nginx/test.com.access.log;

 location / {
  proxy_pass http://myapp:8080;
  proxy_buffering off;
 }
}

它是在这里文档化的:format“上下文: http”

http上下文是顶层块,包含server块的块(通常您看不到它,因为它位于包含.conf的另一个文件中)

票数 5
EN

Stack Overflow用户

发布于 2018-04-06 11:12:07

这似乎是this question的翻版。

该消息意味着在不允许的地方有一个http指令,即

代码语言:javascript
复制
http {
    ...
}

您可能希望使用server块,即

代码语言:javascript
复制
server {
    listen 80 default_server;
    server_name test.com;
    root /var/www/test/;
    access_log /var/log/nginx/test.com.access.log;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49691359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档