Điểm:1

Làm cách nào để tôi chuyển một giá trị thông số FastCGI tùy chỉnh vào một biến NGINX?

lá cờ br

Sử dụng NhanhCGI mô-đun cho phép tôi chuyển trực tiếp các biến máy chủ vào ứng dụng PHP của mình thông qua việc sử dụng thông số. Điều tôi hy vọng sẽ làm tiếp theo là ghi lại một trong những thông số này vào nhật ký truy cập NGINX của mình.

Tôi đã thử gán trực tiếp cái này cho định dạng nhật ký theo tên của thông số, nhưng có vẻ như nó dẫn đến một giá trị trống. Sau đó, tôi đã thử chuyển thông số này vào một biến NGINX nhưng cũng không gặp may.

Trong cấu hình sau, tôi đã xác định biến NGINX của riêng mình $logparam để lưu trữ giá trị được khai báo trên tham số FastCGI tùy chỉnh của riêng tôi LOG_PARAM, mà dường như không hoạt động theo cách đó.

Nếu có bất kỳ giải pháp khả thi nào để xử lý việc này, nó sẽ được đánh giá rất cao.

http {
    bao gồm /etc/nginx/mime.types;
    ứng dụng default_type/octet-stream;

    # Thêm biến nginx để truy cập định dạng nhật ký
    docker log_format '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" "$logparam"';

    bao gồm conf.d/*.conf;

    bản đồ $http_upgrade $connection_upgrade {
        "nâng cấp" mặc định;
    }

    người phục vụ {
        nghe 80 default_server;
        access_log /var/log/nginx/access.log docker;
        # Khai báo biến để lưu thông số fastcgi
        đặt $logparam "";

        client_header_timeout 60;
        client_body_timeout 60;
        keepalive_timeout 60;
        gzip tắt;
        gzip_comp_cấp 4;
        văn bản gzip_types/văn bản thuần túy/ứng dụng css/ứng dụng json/ứng dụng javascript/văn bản x-javascript/ứng dụng xml/ứng dụng xml/xml+văn bản rss/javascript;

        địa điểm / {
            try_files $uri $uri/ /index.php?_url=$uri&$args;
        }

        vị trí ~ [^/]\.php(/|$) { 

            fastcgi_pass unix:/run/php-fpm/www.sock;
            fastcgi_index /index.php;

            fastcgi_buffers 16 16k; 
            fastcgi_buffer_size 32k;
            
            bao gồm /etc/nginx/fastcgi_params;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

            # Đã khai báo thông số mới với giá trị tùy chỉnh và chuyển vào biến nginx
            fastcgi_param LOG_PARAM "thử nghiệm";
            đặt $logparam LOG_PARAM;
        }

        vị trí ~ /\.ht {
            Phủ nhận tất cả;
        }

        vị trí ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
            hết hạn tối đa;
            log_not_found tắt;
            truy cập_đăng xuất;
        }

    }
}
Điểm:0
lá cờ cn

Tôi tin rằng bạn có thể thêm biến vào tiêu đề phản hồi và ghi lại tiêu đề phản hồi này.

Thêm biến vào tiêu đề phản hồi:

vị trí ~ [^/]\.php(/|$) {
    add_header x-my-param "$logparam";
    ...
}

Và Thay đổi định dạng nhật ký của bạn:

docker log_format '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" "$sent_http_x_my_param"';

Tôi mong cái này sẽ thành công.

Xem thêm:

https://nginx.org/en/docs/http/ngx_http_log_module.html#log_format

https://nginx.org/en/docs/http/ngx_http_core_module.html#variables

lá cờ br
Xin chào @ampularius, câu trả lời của bạn không trực tiếp tuân thủ câu hỏi của tôi, tôi đã hy vọng tìm được cách chuyển giá trị của FastCGI param LOG_PARAM vào biến $logparams Nginx, cách tiếp cận mà bạn đang thực hiện không đề cập đến cách chuyển nó từ một tham số FastCGI. Và vì nó là tham số FastCGI, nên nó được dự định sử dụng làm biến máy chủ, vì vậy tôi không muốn sử dụng tiêu đề trong trường hợp này.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.