我和nginx有个码头形象。
我想记录收到的请求。
我的船坞-撰写文件:
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配置:
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指令时:
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;我得到了:
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发布于 2018-04-06 22:09:18
将log_format放在server{}块之外,因为不是每个指令都可以到达任何地方。简单地说:
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的另一个文件中)
发布于 2018-04-06 11:12:07
这似乎是this question的翻版。
该消息意味着在不允许的地方有一个http指令,即
http {
...
}您可能希望使用server块,即
server {
listen 80 default_server;
server_name test.com;
root /var/www/test/;
access_log /var/log/nginx/test.com.access.log;
}https://stackoverflow.com/questions/49691359
复制相似问题