Cấu hình máy chủ HTTP trong Nginx – Các biến môi trường

Tiếp tục với loạt bài cấu hình máy chủ HTTP trong Nginx, ở bài này, chúng ta tiếp tục tìm hiểu đến thành phần cấu hình thứ 2 của module HTTP Core trong Nginx – các biến. Các biến này có thể được sử dụng như giá trị của các chỉ thị, hoặc có thể được sử dụng trong các xử lý điều kiện của Nginx.

Các biến này được chia thành các nhóm chính sau:

1. Request headers

  • $http_host

Giá trị của thẻ Host trong phần header của HTTP, 1 chuỗi chỉ rõ hostname mà khách hàng muốn truy cập đến.

  • $http_user_agent

Giá trị của thẻ User-Agent trong phần header của HTTP, 1 chuỗi chỉ rõ trình duyệt web của khách hàng.

  • $http_referer

Giá trị của thẻ Referer trong phần header của HTTP, 1 chuỗi chỉ rõ URL của trang trước mà từ đó khách hàng truy cập đến.

  • $http_via

Giá trị của thẻ Via trong phần header của HTTP, thông báo cho chúng ta biết về các proxy có thể được dùng bởi khách hàng.

  • $http_x_forwarded_for

Giá trị của thẻ X-Forwarded-For trong phần header của HTTP, hiển thị IP thực sự của khách hàng nếu khách hàng đứng sau 1 proxy.

  • $http_cookie

Giá trị của thẻ Cookie trong phần header của HTTP, chứa dữ liệu lưu trong cookie được gửi bởi khách hàng.

  • $http_…

Các header bổ sung được gửi bởi khách hàng có thể thu được bằng việc sử dụng $http_ theo sau là tên thẻ header viết bằng chữ thường và với dấu gạch ngang (-) thay cho dấu gạch dưới (_).

 

2. Response headers

  • $sent_http_content_type

Giá trị của thẻ Content-Type trong phần header của HTTP, chỉ ra loại MIME của tài nguyên được truyền tải.

  • $sent_http_content_length

Giá trị của thẻ Content-Length trong phần header của HTTP, thông báo cho khách hàng biết về chiều dài của dữ liệu phản hồi.

  • $sent_http_location

Giá trị của thẻ Location trong phần header của HTTP, chỉ rằng vị trí của tài nguyên được yêu cầu khác với vị trí được chỉ rõ trong yêu cầu.

  • $sent_http_last_modified

Giá trị của thẻ Last-Modified trong phần header của HTTP tương ứng với ngày điều chỉnh của tài nguyên được yêu cầu.

  • $sent_http_connection

Giá trị của thẻ Connection trong phần header của HTTP, định nghĩa việc kết nối sẽ được duy trì hoặc đóng.

  • $sent_http_keep_alive

Giá trị của thẻ Keep-Alive trong phần header của HTTP, định nghĩa lượng thời gian 1 kết nối sẽ được duy trì.

  • $sent_http_transfer_encoding

Giá trị của thẻ Transfer-Encoding trong phần header của HTTP, cho thông tin về phương thức mã hóa dữ liệu phản hồi  (như là nén, gzip).

  • $send_http_cache_control

Giá trị của thẻ Cache-Control trong phần header của HTTP, cho chúng ta biết là trình duyệt web của khách hàng có lưu tài nguyên trong bộ nhớ cache hay không.

  • $send_http_…

Các thẻ bổ sung trong phần header của HTTP được gửi đến khách hàng, có thể lấy được bằng việc sử dụng $sent_http_ theo sau là tên của thẻ trong header, viết bằng chữ thường và thay dấu gạch dưới (_) bằng dấu gạch ngang (-).

 

3. Nginx generated

  • $arg_XXX

Cho phép chúng ta truy cập chuỗi truy vấn (các thông số GET), với XXX là tên của thông số chúng ta muốn sử dụng.

  • $args

Tất cả các đối số của chuỗi truy vấn kết hợp với nhau.

  • $binary_remote_addr

Địa chỉ IP của khách hàng dưới dạng dữ liệu nhị phân (4 byte).

  • $body_bytes_sent

Số Byte được gửi trong phần thân của phản hồi.

  • $connection_requests

Số lượng yêu cầu đã phục vụ rồi ở kết nối hiện tại.

  • $content_length

Tương đương với thẻ Content-Length.

  • $content_type

Tương đương với thẻ Content-Type.

  • $cookie_XXX

Cho phép chúng ta truy cập dữ liệu trong cookie với XXX là tên của tham số mà chúng ta muốn sử dụng.

  • $document_root

Trả về giá trị của chỉ thị root cho yêu cầu hiện tại.

  • $document_uri

Trả về URI hiện tại của kết nối đó. Nó có thể khác với URI của yêu cầu ban đầu nếu các chuyển hướng nội bộ được thực hiện. Nó giống hệt với biến $uri.

  • $host

Biến này tương đương với thẻ Host trong phần header của HTTP, tự Nginx cho biến này 1 giá trị cho nhiều trường hợp khi thẻ Host không được cung cấp trong yêu cầu ban đầu.

  • $hostname

Trả về hostname của máy chủ.

  • $https

Thiết lập thành on cho các kết nối HTTPS, ngược lại thì để trống.

  • $is_args

Nếu biến $args được định nghĩa, $is_args tương đương với ?. Nếu biến $args là rỗng, $is_args cũng rỗng. Chúng ta có thể sử dụng biến này cho việc khởi tạo 1 URI tùy chọn đi kèm với 1 chuỗi truy vấn, như là index.php?is_args$args. Nếu có bất kỳ đối số chuỗi truy vấn nào trong yêu cầu, $is_args được thiết lập thành ?, điều này giúp cho URI này hợp lệ.

  • $limit_rate

Trả về giới hạn tỉ lệ truyền tải trên từng kết nối, được định nghĩa bởi chỉ thị limit_rate. Chúng ta được cho phép để điều chỉnh biến này bằng việc sử dụng set (chỉ thị từ module Rewrite):

set $limit_rate 128k;

  • $nginx_version

Trả về phiên bản của Nginx đang chạy.

  • $pid

Trả về Process ID của Nginx.

  • $query_string

Giống hệt với $args.

  • $remote_addr

Trả về địa chỉ IP của khách hàng.

  • $remote_port

Trả về port socket của khách hàng.

  • $remote_user

Trả về username của khách hàng nếu họ sử dụng chứng thực.

  • $realpath_root

Trả về gốc tài liệu trong yêu cầu của khách hàng, với các liên kết mềm được xử lý thành các đường dẫn thực sự.

  • $request_body

Trả về phần thân của yêu cầu từ khách hàng, hoặc là – nếu như phần thân rỗng.

  • $request_body_file

Nếu phần thân của yêu cầu được lưu lại (chỉ thị client_body_in_file_only), biến này chỉ rõ đường dẫn của tập tin tạm đó.

  • $request_completion

Trả về OK nếu yêu cầu được hoàn thành, 1 chuỗi rỗng trong trường hợp ngược lại.

  • $request_filename

Trả về tên tập tin đầy đủ được phục vụ trong yêu cầu hiện tại.

  • $request_method

Chỉ rõ phương thức HTTP được dùng trong yêu cầu, như là GET hoặc POST.

  • $request_uri

Tương ứng với URI ban đầu của yêu cầu, giữ không thay đổi trong suốt tiến trình (không giống $document_uri/$uri).

  • $scheme

Trả về hoặc http hoặc https, dựa trên yêu cầu.

  • $server_addr

Trả về địa chỉ IP của máy chủ.

  • $server_name

Chỉ ra giá trị của chỉ thị server_name được dùng trong khi xử lý yêu cầu.

  • $server_port

Chỉ ra port của socket trên máy chủ nhận dữ liệu yêu cầu.

  • $server_protocol

Trả về giao thức và phiên bản, thường là HTTP/1.0 hoặc HTTP/1.1

  • $tcpinfo_rtt, $tcpinfo_rttvar, tcpinfo_snd_cwnd, $tcpinfo_rcv_space

Nếu hệ điều hành của chúng ta hỗ trợ tùy chọn socket TCP_INFO, những biến này sẽ được tạo với thông tin trên kết nối TCP hiện tại của khách hàng.

  • $time_iso8601, $time_local

Cung cấp thời gian hiện tại theo định dạng ISO 8601 và định dạng cục bộ để sử dụng với chỉ thị access_log.

  • $uri

Giống với biến $document_uri.

 Chúng ta kết thúc bài tìm hiểu về các biến môi trường được cung cấp bởi module HTTP Core tại đây.

 

Related Post