Opened 3 years ago

Last modified 3 years ago

#2244 closed defect

`listen` not working inside `include` — at Version 2

Reported by: Thomas Landauer Owned by:
Priority: minor Milestone:
Component: nginx-core Version: 1.18.x
Keywords: include, listen Cc:
uname -a: 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
nginx -V: nginx version: nginx/1.18.0 (Ubuntu)
built with OpenSSL 1.1.1f 31 Mar 2020
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-KTLRnK/nginx-1.18.0=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-compat --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module

Description (last modified by Thomas Landauer)

With this being my sites-enabled/foo.conf

server {
    include inc*;
    ssl_certificate     localhost.crt;
    ssl_certificate_key localhost.key;
    ...
}

... and this my sites-enabled/inc

listen 443 ssl http2;

... I'm getting:

nginx: [emerg] "listen" directive is not allowed here in /etc/nginx/sites-enabled/inc:1

If I move the ssl_certificate lines to inc (and move the listen back to foo.conf), it works.

So either this is a bug, or http://nginx.org/en/docs/ngx_core_module.html#include is wrongly claiming that include works in any context.

Change History (2)

comment:1 by Maxim Dounin, 3 years ago

The sites-enabled/inc is not expected to be included by include inc*;, since include paths are relative to the main configuration file. On the other hand, as long as your nginx.conf contains something like include /etc/nginx/sites-enabled/*;, which is the default in the Ubuntu nginx package you are using, the error is expected to appear, as your include file will be included in the http block, and the listen directive is not allowed in http context.

Could you please show other include directives as used in your nginx configuration, notably in /etc/nginx/nginx.conf?

comment:2 by Thomas Landauer, 3 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.