前言
因前陣子被人用DDOS攻擊,
然後公司有一個單位就跑出來了,說他們要nginx的log,
發生當下才能作為分析用途。
正文
nginx 版本 1.21.4
更改nginx config ,
將
access_log /dev/stdout main;
error_log /dev/stderr;
放在 http 底下的 service內。
這樣就會把log 訊息,使用標準輸出的方式列印到機器上。
GKE就能抓到記錄了。
然後使用 ECK的filebeat ,預設是會去抓各個log的資料。
但前提是要有標準輸出,所以這邊就不用設定了。
完整config 如下
#user nobody;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] , '
'http-host: "$http_host" , URL: "$request" , request-status : "$status" , '
'body-byte: $body_bytes_sent ,http-referer: "$http_referer" ,'
'user-agent: "$http_user_agent" , X-Forwarded-For : "$http_x_forwarded_for" , '
' request-time: "$request_time" , response_time : "$upstream_response_time" ';
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
listen [::]:80;
root /app;
listen 443 ssl;
listen [::]:443 ssl;
server_name _;
ssl off;
ssl_certificate /etc/nginx/nginxssl.crt;
ssl_certificate_key /etc/nginx/nginxssl.key;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
access_log /dev/stdout main;
error_log /dev/stderr;
location / {
try_files $uri /index.php$is_args$query_string;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
ref.
0 意見:
張貼留言