[GH-ISSUE #4685] [SOLVED] Forward domain name request to Nginx Proxy Manager to another local IP, possible? #2978

Closed
opened 2026-02-26 07:37:28 +03:00 by kerem · 4 comments
Owner

Originally created by @mixpc on GitHub (Jul 29, 2025).
Original GitHub issue: https://github.com/NginxProxyManager/nginx-proxy-manager/issues/4685

In this scenario:

Raspberry Pi 4, first SBC
192.168.68.101
Nginx proxy manager installed as docker container, certificates issued by Let’s Encrypt
Homer and Portainer installed as containers
services.domain.com -> 192.168.68.101
media.domain.com -> 192.168.68.102

https://homer.services.domain.com -> 192.168.68.101:87
https://portainer.services.domain.com -> 192.168.68.101:88
Homer and Portainer can be access from within the Lan, so all good.

Raspberry Pi 4, second SBC
192.168.68.102
Jellyfin installed as container

http://192.168.68.102:89 opens the Jellyfin login page, so good, but no https
https://jellyfin.media.domain.com -> 192.168.68.102:89
Jellyfin cannot be accessed from within the Lan.

I have run several searches for “nginx proxy manager forward to a different local ip address” or “nginx proxy manager redirect to another local machine” with no success.

Is there a way or different ways to achieve the following?
https://jellyfin.media.domain.com -> 192.168.68.102:89

Thank you in advance.

Originally created by @mixpc on GitHub (Jul 29, 2025). Original GitHub issue: https://github.com/NginxProxyManager/nginx-proxy-manager/issues/4685 In this scenario: **Raspberry Pi 4, first SBC** 192.168.68.101 Nginx proxy manager installed as docker container, certificates issued by Let’s Encrypt Homer and Portainer installed as containers services.domain.com -> 192.168.68.101 media.domain.com -> 192.168.68.102 https://homer.services.domain.com -> 192.168.68.101:87 https://portainer.services.domain.com -> 192.168.68.101:88 Homer and Portainer can be access from within the Lan, so all good. **Raspberry Pi 4, second SBC** 192.168.68.102 Jellyfin installed as container http://192.168.68.102:89 opens the Jellyfin login page, so good, but no https https://jellyfin.media.domain.com -> 192.168.68.102:89 Jellyfin cannot be accessed from within the Lan. I have run several searches for “nginx proxy manager forward to a different local ip address” or “nginx proxy manager redirect to another local machine” with no success. Is there a way or different ways to achieve the following? https://jellyfin.media.domain.com -> 192.168.68.102:89 Thank you in advance.
kerem closed this issue 2026-02-26 07:37:28 +03:00
Author
Owner

@lastsamurai26 commented on GitHub (Aug 4, 2025):

Can you show us your npm config for this proxy ?
did you really changed the port from 8096 to 89 ? and did you added this variable to the jellyfin docker env ?
JELLYFIN_PublishedServerUrl

<!-- gh-comment-id:3149225420 --> @lastsamurai26 commented on GitHub (Aug 4, 2025): Can you show us your npm config for this proxy ? did you really changed the port from 8096 to 89 ? and did you added this variable to the jellyfin docker env ? JELLYFIN_PublishedServerUrl
Author
Owner

@mixpc commented on GitHub (Aug 4, 2025):

@lastsamurai26 Thank you for your feedback. I have returned to the default 8096 Jellyfin port and restarted the server, but I have the same issue. I am pasting below the two config files, but if you need additional feedback, please do not hesitate and I'll provide it.

Nginx Proxy Manager docker-compose.yml

version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx-proxy-manager
    networks:
      nginx-proxy-manager_default:
        ipv4_address: 172.28.0.4
    restart: unless-stopped
    ports:
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
    environment:
      - TZ=Europe/Paris
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
      - /home/user/docker/nginx-proxy-manager/data/badbotblocker/conf.d/botblocker-nginx-settings.conf:/etc/nginx/conf.d/botblocker-nginx-settings.conf
      - /home/user/docker/nginx-proxy-manager/data/badbotblocker/conf.d/globalblacklist.conf:/etc/nginx/conf.d/globalblacklist.conf
      - /home/user/docker/nginx-proxy-manager/data/badbotblocker/bots.d:/etc/nginx/bots.d
    healthcheck:
      test: ["CMD", "/usr/bin/check-health"]
      interval: 10s
      timeout: 3s
networks:
  nginx-proxy-manager_default:
    external: true
    ipam:
      config:
        - subnet: 172.28.0.0/16

Jellyfin docker-compose.yml

version: '3.5'
services:
  jellyfin:
    image: jellyfin/jellyfin
    container_name: jellyfin
    user: 1000:1000
    network_mode: 'host'
    volumes:
      - ./config:/config
      - ./cache:/cache
      - "/mnt/USB:/media"
    restart: 'unless-stopped'
    environment:
      - JELLYFIN_PublishedServerUrl=http://jellyfin.services.duckdns.org
    extra_hosts:
      - "host.docker.internal:host-gateway"

In duckdns.org
jellyfin.services.duckdns.org points to 192.168.68.102

In Nginx Proxy Manager
jellyfin.services.duckdns.org points to http://192.168.68.102:8096

So
http://192.168.68.102:8096
is accessible from the LAN but jellyfin.services.duckdns.org is not.

Thank you once more.

<!-- gh-comment-id:3149327689 --> @mixpc commented on GitHub (Aug 4, 2025): @lastsamurai26 Thank you for your feedback. I have returned to the default 8096 Jellyfin port and restarted the server, but I have the same issue. I am pasting below the two config files, but if you need additional feedback, please do not hesitate and I'll provide it. Nginx Proxy Manager docker-compose.yml ``` version: '3.8' services: app: image: 'jc21/nginx-proxy-manager:latest' container_name: nginx-proxy-manager networks: nginx-proxy-manager_default: ipv4_address: 172.28.0.4 restart: unless-stopped ports: - '80:80' # Public HTTP Port - '443:443' # Public HTTPS Port - '81:81' # Admin Web Port environment: - TZ=Europe/Paris volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt - /home/user/docker/nginx-proxy-manager/data/badbotblocker/conf.d/botblocker-nginx-settings.conf:/etc/nginx/conf.d/botblocker-nginx-settings.conf - /home/user/docker/nginx-proxy-manager/data/badbotblocker/conf.d/globalblacklist.conf:/etc/nginx/conf.d/globalblacklist.conf - /home/user/docker/nginx-proxy-manager/data/badbotblocker/bots.d:/etc/nginx/bots.d healthcheck: test: ["CMD", "/usr/bin/check-health"] interval: 10s timeout: 3s networks: nginx-proxy-manager_default: external: true ipam: config: - subnet: 172.28.0.0/16 ``` Jellyfin docker-compose.yml ``` version: '3.5' services: jellyfin: image: jellyfin/jellyfin container_name: jellyfin user: 1000:1000 network_mode: 'host' volumes: - ./config:/config - ./cache:/cache - "/mnt/USB:/media" restart: 'unless-stopped' environment: - JELLYFIN_PublishedServerUrl=http://jellyfin.services.duckdns.org extra_hosts: - "host.docker.internal:host-gateway" ``` In duckdns.org jellyfin.services.duckdns.org points to 192.168.68.102 In Nginx Proxy Manager jellyfin.services.duckdns.org points to http://192.168.68.102:8096 So http://192.168.68.102:8096 is accessible from the LAN but jellyfin.services.duckdns.org is not. Thank you once more.
Author
Owner

@lastsamurai26 commented on GitHub (Aug 4, 2025):

I'm sure you can find the error yourself.

According to your query, you are running NPM on one and JellyFin on the other, correct?
So you have 2 different IP addresses ? Example:
192.168.68.102 -> JellyFin
192.168.68.101 -> NPM

In duckDNS you have pointed the domain to the JellyFin.

Now the actual brainteaser.
How is the NPM supposed to know about this request? if the DNS entry points directly to Jellyfin?

Please correct me if I understand this incorrectly.
but it should actually work like this

internet -> jellyfin.services.duckdns.org -> DNS -> NPM -> JellyFin

so your client queries the IP for jellyfin.services.duckdns.org and receives it from the NPM, which then forwards it to the JellyFin via IP

This is actually the correct way

So point your jellyfin.services.duckdns.org to 192.168.68.101
and on the NPM point the domain to 192.168.68.102:8096

<!-- gh-comment-id:3149400741 --> @lastsamurai26 commented on GitHub (Aug 4, 2025): I'm sure you can find the error yourself. According to your query, you are running NPM on one and JellyFin on the other, correct? So you have 2 different IP addresses ? Example: 192.168.68.102 -> JellyFin 192.168.68.101 -> NPM In duckDNS you have pointed the domain to the JellyFin. Now the actual brainteaser. How is the NPM supposed to know about this request? if the DNS entry points directly to Jellyfin? Please correct me if I understand this incorrectly. but it should actually work like this internet -> jellyfin.services.duckdns.org -> DNS -> NPM -> JellyFin so your client queries the IP for jellyfin.services.duckdns.org and receives it from the NPM, which then forwards it to the JellyFin via IP This is actually the correct way So point your jellyfin.services.duckdns.org to 192.168.68.101 and on the NPM point the domain to 192.168.68.102:8096
Author
Owner

@mixpc commented on GitHub (Aug 4, 2025):

@lastsamurai26 Thak you SO much! You're assumptions are so right. I've been trying to sort it out myself for a good couple of months... I just gave up and had to ask for support. The question you posed in the brainteaser, that was it. Issue tagged as [SOLVED]. Thank you once more.

<!-- gh-comment-id:3149732977 --> @mixpc commented on GitHub (Aug 4, 2025): @lastsamurai26 Thak you SO much! You're assumptions are so right. I've been trying to sort it out myself for a good couple of months... I just gave up and had to ask for support. The question you posed in the brainteaser, that was it. Issue tagged as [SOLVED]. Thank you once more.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/nginx-proxy-manager-NginxProxyManager#2978
No description provided.