[PATCH] fastcgi_params: added REMOTE_HOST parameter
Maxim Dounin
mdounin at mdounin.ru
Fri Jan 12 22:19:59 UTC 2024
Hello!
On Fri, Jan 12, 2024 at 05:04:22PM +0000, Jakub Zelenka wrote:
> Hi,
>
> I'm a PHP-FPM maintainer and some FPM users have issues with missing host
> header when using HTTP/3: https://github.com/php/php-src/issues/13021 .
> This is not an nginx issue as correctly noted in
> https://trac.nginx.org/nginx/ticket/2281 but it would be nice to have
> fastcgi_param set for getting host in default config. I was thinking how to
> best expose $host and REMOTE_HOST seems logical and so I think it could be
> useful addition. I can update FPM to also set REMOTE_HOST from HTTP_HOST if
> REMOTE_HOST is not set which would make it even more available for HTTP/1.1
> and HTTP/2 users.
>
> Please let me know what you think!
>
> # HG changeset patch
> # User Jakub Zelenka <bukka at php.net>
> # Date 1705078404 0
> # Fri Jan 12 16:53:24 2024 +0000
> # Node ID 1ff2f737bd318a730d0944a6037c8fd7c7da2656
> # Parent ee40e2b1d0833b46128a357fbc84c6e23be9be07
> Added REMOTE_HOST parameter to fastcgi_params.
>
> When HTTP/3 is used, users will no longer get HTTP_HOST as host header is no
> longer set by most clients. It is useful / necessary for many setups to have
> such information and REMOTE_HOST is defined in CGI/1.1 for such purpose.
https://datatracker.ietf.org/doc/html/rfc3875#section-4.1.9
The REMOTE_HOST variable contains the fully qualified domain name of
the client sending the request to the server, if available, otherwise
NULL.
That is, REMOTE_HOST is completely unrelated. It is not the
hostname of the requested server, but the hostname of the client -
result of a reverse DNS lookup of a client's IP address, something
used to be provided by some servers when Internet was small (e.g,
HostnameLookups in Apache). It is certainly not the right param
to use for $host.
IMO, proper param to use would be SERVER_NAME. It is set to
$server_name by default, though can be modified locally to provide
$host if needed in the particular configuration.
>
> diff -r ee40e2b1d083 -r 1ff2f737bd31 conf/fastcgi_params
> --- a/conf/fastcgi_params Mon Dec 25 21:15:48 2023 +0400
> +++ b/conf/fastcgi_params Fri Jan 12 16:53:24 2024 +0000
> @@ -17,6 +17,7 @@
>
> fastcgi_param REMOTE_ADDR $remote_addr;
> fastcgi_param REMOTE_PORT $remote_port;
> +fastcgi_param REMOTE_HOST $host;
> fastcgi_param SERVER_ADDR $server_addr;
> fastcgi_param SERVER_PORT $server_port;
> fastcgi_param SERVER_NAME $server_name;
--
Maxim Dounin
http://mdounin.ru/
More information about the nginx-devel
mailing list