ใช้ FastCGI โมดูลอนุญาตให้ฉันส่งตัวแปรเซิร์ฟเวอร์ไปยังแอปพลิเคชัน PHP ของฉันโดยตรงผ่านการใช้ พารามิเตอร์. สิ่งที่ฉันหวังว่าจะทำต่อไปคือบันทึกหนึ่งในพารามิเตอร์เหล่านี้ลงในบันทึกการเข้าถึง NGINX ของฉัน
ฉันได้ลองกำหนดสิ่งนี้โดยตรงให้กับรูปแบบบันทึกโดยใช้ชื่อพารามิเตอร์ แต่ดูเหมือนว่าผลลัพธ์จะเป็นค่าว่าง ต่อมาฉันได้ลองส่งพารามิเตอร์นี้ไปยังตัวแปร NGINX แต่ก็ไม่มีโชคเช่นกัน
ในการกำหนดค่าต่อไปนี้ ฉันได้กำหนดตัวแปร NGINX ของตัวเองแล้ว $ล็อกพาราม เพื่อเก็บค่าที่ประกาศในพารามิเตอร์ FastCGI ที่ฉันกำหนดเอง LOG_PARAMซึ่งดูเหมือนจะไม่ทำงานอย่างนั้น
หากมีวิธีแก้ปัญหาใด ๆ ที่เป็นไปได้ในการจัดการกับสิ่งนี้ มันจะขอบคุณมาก
http {
รวม /etc/nginx/mime.types;
แอปพลิเคชัน default_type/octet-stream;
# การเพิ่มตัวแปร nginx เพื่อเข้าถึงรูปแบบบันทึก
นักเทียบท่า log_format '$remote_addr - $remote_user [$time_local] "$request"'
'$สถานะ $body_bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for" "$logparam"';
รวม conf.d/*.conf;
แผนที่ $http_upgrade $connection_upgrade {
เริ่มต้น "อัพเกรด";
}
เซิร์ฟเวอร์ {
ฟัง 80 default_server;
access_log /var/log/nginx/access.log นักเทียบท่า;
# ประกาศตัวแปรเพื่อเก็บ fastcgi param
ตั้ง $logparam "";
client_header_timeout 60;
client_body_timeout 60;
keepalive_timeout 60;
gzip ปิด;
gzip_comp_level 4;
ข้อความ gzip_types/ข้อความล้วน/แอปพลิเคชัน css/แอปพลิเคชัน json/แอปพลิเคชันจาวาสคริปต์/ข้อความ x-จาวาสคริปต์/แอปพลิเคชัน xml/แอปพลิเคชัน xml/xml+rss ข้อความ/จาวาสคริปต์;
ที่ตั้ง / {
try_files $uri $uri/ /index.php?_url=$uri&$args;
}
ตำแหน่ง ~ [^/]\.php(/|$) {
fastcgi_pass ยูนิกซ์:/run/php-fpm/www.sock;
fastcgi_index /index.php;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
รวม /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# ประกาศพารามิเตอร์ใหม่พร้อมค่าที่กำหนดเองและส่งต่อไปยังตัวแปร nginx
fastcgi_param LOG_PARAM "ทดสอบ";
ตั้ง $logparam LOG_PARAM;
}
ตำแหน่ง ~ /\.ht {
ปฏิเสธทั้งหมด
}
ตำแหน่ง ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
หมดอายุสูงสุด
ปิด log_not_found;
access_log off;
}
}
}