Opened 2 years ago
Closed 2 years ago
#2381 closed defect (wontfix)
Unable to read configuration from /dev/stdin
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | nginx-core | Version: | 1.23.x |
Keywords: | test configuration | Cc: | moronizzz@… |
uname -a: | Linux hostname 5.10.0-17-amd64 #1 SMP Debian 5.10.136-1 (2022-08-13) x86_64 GNU/Linux | ||
nginx -V: |
nginx version: nginx/1.23.1
built by gcc 10.2.1 20210110 (Debian 10.2.1-6) built with OpenSSL 1.1.1n 15 Mar 2022 TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -ffile-prefix-map=/data/builder/debuild/nginx-1.23.1/debian/debuild-base/nginx-1.23.1=. -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie' |
Description
GNU bash, version 5.1.4
nginx version: nginx/1.23.1
There is an error when I try to test configuration from /dev/stdin
$ nginx -prefix=/etc/nginx -t -c /dev/stdin <<< "events {}" nginx: the configuration file /dev/stdin syntax is ok nginx: [emerg] no "events" section in configuration nginx: configuration file /dev/stdin test failed
Configuration validation using /dev/stdin worked earlier e.g.
GNU bash, version 4.4.12
nginx version: nginx/1.19.6
Linux hostname 4.9.0-9-amd64 SMP Debian 4.9.168-1+deb9u3 (2019-06-16) x86_64 GNU/Linux
$ nginx -prefix=/etc/nginx -t -c /dev/stdin <<< "events {}" nginx: the configuration file /dev/stdin syntax is ok nginx: configuration file /dev/stdin test is successful
Note:
See TracTickets
for help on using tickets.
Since nginx expects configuration file to be a real file and, in particular, uses its size while parsing, it is not possible to use configuration provided via stdin.
Most likely this worked for you because bash used to provide here-documents in temporary files (see here for details), but not anymore. For example, bash 5.1.8 on Ubuntu 21.10 uses pipe() instead, at least in some cases:
To fix this, consider providing appropriate temporary configuration files yourself, instead of relying on non-documented and not guaranteed shell behaviour.