NginxProxyManager / NginxProxyManager/nginx-proxy-manager

Add start and end ports for streams

Open
#4,720 3 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
TypeScript
Stars
34.2k
Forks
3.9k
Avg merge
21h 12m
Merged PRs (30d)
20

Description

Is your feature request related to a problem? Please describe.

As of NGINX version 1.15.10, the listen directive accepts port ranges, but NPM only allow adding a stream host listening on a single port.

I wanted to setup a stream for FTP server with passive mode. In order to support passive mode, many ports are needed and it's PITA to add all of them one by one.

Ultimately, I created a custom config under data/nginx/custom/stream.conf to workaround NPM's limitation.

Describe the solution you'd like

Add start and end listening ports when creating stream host
Add start and end forwarding ports
Validate input (same port, same number of ports as forwarding ports)

Describe alternatives you've considered

Currently working using custom config

data/nginx/custom/stream.conf:
`
server {
listen 20-21;
listen [::]:20-21;
listen 32500-32599;
listen [::]:32500-32599;

proxy_pass <INTERNAL_SERVER_IP>:$server_port;
}
`

Additional context

Obviously, I could continue to use custom configs, but this feature will make lives easier. Additionally, servers added through custom configs do not show up in the dashboard.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading data/nginx/custom/stream.conf and tracing how stream hosts are represented and created in the dashboard. The work is done when stream hosts accept start and end listening and forwarding ports, validate matching ranges, generate the NGINX configuration, and appear in the dashboard.

Written by the indexing model from the issue text.

Assessment

Tech stack
nginx, typescript
Domain
full-stack
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.