NginxProxyManager / NginxProxyManager/nginx-proxy-manager
Podman socket activation support
Nobody has claimed this yet.
- 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.
Client IP addresses are not accessible by Nginx and therefore other containers
When using rootless podman, client IP addresses get rewritten to the internal container IP. There is no workaround other than using host networking, or using another option that is incompatible with container networks.
Describe the solution you'd like
Podman supports a feature where a systemd socket is forwarded to a container, which fixes this issue and also reduces overhead since the requests don't have to be processed by slirp4netns.
Nginx already has support for this by setting an Env variable NGINX=3;. Example 1 demonstates how to.
When using Nginx PM, this variable gets passed down to Nginx. However, an error occurs:
fd 3: Socket not connected
I don't have enough experience to troubleshoot, but perhaps NPM is not passing the socket to Nginx.
Describe alternatives you've considered
Podman 5 supports a new networking stack called Pasta which apparently can pass the real IP, however it will take a considerable time until most distributions ship it.
As mentioned, other workarounds either break user networks, or require network-mode host alltogether.
Additional context
Podman socket activation
nginx documentation
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the Podman socket activation and Nginx systemd socket activation documentation linked in the issue, then trace how Nginx Proxy Manager passes the NGINX=3 environment variable and socket-related descriptors to Nginx. Done means rootless Podman socket activation works without the “fd 3: Socket not connected” error and client IP addresses remain available to Nginx.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- nginx, typescript
- Domain
- devops, infrastructure
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100