Checklist
- Have you pulled and found the error with
jc21/nginx-proxy-manager:latest docker image?
- Are you sure you're not using someone else's docker image?
- Have you searched for similar issues (both open and closed)?
Describe the bug
When creating a Stream Host and specifying an IPv6 address as the Forward Host, Nginx Proxy Manager accepts and stores the configuration but generates an invalid nginx upstream definition.
The generated configuration does not wrap IPv6 addresses in square brackets before appending the port number, causing nginx validation to fail.
Nginx Proxy Manager Version
2.15.1
To Reproduce
Steps to reproduce the behavior:
- Create a new Stream Host.
- Enter an IPv6 address as the Forward Host, for example: fe80::528:3c87:e7bb:ab08
- Enter any valid port (e.g. 25).
- Save the Stream Host.
Expected behavior
NPM should either:
Generate a valid nginx upstream entry or reject the configuration with a validation error if the format is unsupported.
Actual behavior
NPM generates nginx config without brackets for the IPv6 address
which nginx rejects with:
nginx: [emerg] invalid port in upstream "fe80::528:3c87:e7bb:ab08:25"
nginx: configuration file /etc/nginx/nginx.conf test failed
The stream host is saved in the database, but nginx cannot activate it.
Evidence
Contents from the stream table show NPM recording the nginx failure:
JSON
{
"incoming_port": 25,
"forwarding_host": "fe80::528:3c87:e7bb:ab08",
"forwarding_port": 25,
"enabled": 1,
"meta": {
"nginx_online": false,
"nginx_err": "nginx: [emerg] invalid port in upstream "fe80::528:3c87:e7bb:ab08:25" in /data/nginx/stream/12.conf:10"
}
}
The issue is reproducible with multiple IPv6 addresses and ports.
Operating System
Raspberry Pi 5 Model B Rev 1.0
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
NAME="Debian GNU/Linux"
VERSION_ID="13"
VERSION="13 (trixie)"
Additional context
nginx -t succeeds when no IPv6-based Stream Hosts are configured.
HTTP proxy hosts appear unaffected.
The issue appears specific to Stream Host configuration generation.
The UI currently accepts raw IPv6 addresses but does not generate valid nginx syntax for them and the config file is not stored in the stream folder.
When configuring the IPv6 address with brackets [fe80::528:3c87:e7bb:ab08] the config file is created in the stream folder and the stream is working fine.
Checklist
jc21/nginx-proxy-manager:latestdocker image?Describe the bug
When creating a Stream Host and specifying an IPv6 address as the Forward Host, Nginx Proxy Manager accepts and stores the configuration but generates an invalid nginx upstream definition.
The generated configuration does not wrap IPv6 addresses in square brackets before appending the port number, causing nginx validation to fail.
Nginx Proxy Manager Version
2.15.1
To Reproduce
Steps to reproduce the behavior:
Expected behavior
NPM should either:
Generate a valid nginx upstream entry or reject the configuration with a validation error if the format is unsupported.
Actual behavior
NPM generates nginx config without brackets for the IPv6 address
which nginx rejects with:
nginx: [emerg] invalid port in upstream "fe80::528:3c87:e7bb:ab08:25"
nginx: configuration file /etc/nginx/nginx.conf test failed
The stream host is saved in the database, but nginx cannot activate it.
Evidence
Contents from the stream table show NPM recording the nginx failure:
JSON
{
"incoming_port": 25,
"forwarding_host": "fe80::528:3c87:e7bb:ab08",
"forwarding_port": 25,
"enabled": 1,
"meta": {
"nginx_online": false,
"nginx_err": "nginx: [emerg] invalid port in upstream "fe80::528:3c87:e7bb:ab08:25" in /data/nginx/stream/12.conf:10"
}
}
The issue is reproducible with multiple IPv6 addresses and ports.
Operating System
Raspberry Pi 5 Model B Rev 1.0
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
NAME="Debian GNU/Linux"
VERSION_ID="13"
VERSION="13 (trixie)"
Additional context
nginx -t succeeds when no IPv6-based Stream Hosts are configured.
HTTP proxy hosts appear unaffected.
The issue appears specific to Stream Host configuration generation.
The UI currently accepts raw IPv6 addresses but does not generate valid nginx syntax for them and the config file is not stored in the stream folder.
When configuring the IPv6 address with brackets [fe80::528:3c87:e7bb:ab08] the config file is created in the stream folder and the stream is working fine.