mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2026-04-25 09:25:55 +03:00
[GH-ISSUE #34] [NOOB] Redirecting to proxy host with SSL #33
Labels
No labels
awaiting feedback
bug
cannot reproduce
dns provider request
duplicate
enhancement
enhancement
enhancement
good first issue
help wanted
invalid
need more info
no certbot plugin available
product-support
pull-request
question
stale
troll
upstream issue
v2
v2
v2
v3
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/nginx-proxy-manager-NginxProxyManager#33
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Daxx13 on GitHub (Dec 12, 2018).
Original GitHub issue: https://github.com/NginxProxyManager/nginx-proxy-manager/issues/34
Hi,
First of all, sorry because is very possible that I misunderstood something or I'm doing something wrong.
The problem is I have some apps that runs only over SSL-enabled connections, so I need to reverse proxy to a SSL server but I can't find a way in the WebUI for this, this is the scenario:
User <----> (Signed SSL) Proxy <----> (Self-signed SSL) ServerThe problem comes when in the UI I can type a server and port, but no the protocol (HTTP/HTTPS). Inside the app container, I can see in
/etc/nginx/conf.d/include/proxy.confthe following variable filling:proxy_pass http://$server:$port;So I think this is ready to enter only the IP and HTTP port in the WebUI, witch fills this variables in the proxy config, but in anyway this will be
http://[whatever]The workarround for us is delete the
http://in this file, and fill theserverinput with the protocol (http://[whatever]orhttps://[whatever]) in the Web UI. This workarround worked like a charm.SO
Is possible to add a dropdown just at the left of server imput field in "New Proxy Host" modal, to pick the protocol, and fill the variables in this way?
proxy_pass $protocol://$server:$port;Many thanks,
Aitor.
@jc21 commented on GitHub (Dec 12, 2018):
Yep it's certainly a possible improvement. I've found myself wanting this in one scenario before as well. Just need to be careful when the upstream server is another http proxy that expects the destination hostname to be supplied and that might be different from the source hostname. Some testing scenarios would need to be considered.
In the meantime, if you want to hack things right now to get moving, find the specific nginx conf file in your data directory for the host you've set up, edit it and look at the
location / {block. There will be a line that is:Replace that line with the following:
Save the file, then restart the docker container and it will pick up those changes. However, if you make changes to that proxy host inside Nginx Proxy Manager interface, it will overwrite your custom changes, so be careful there.
@Daxx13 commented on GitHub (Dec 13, 2018):
Thanks for this workarround.
What needs to be tested? Maybe I can help here! About
https://I can say It works for IP address proxyed servers on SSL enabled ports with the workarround. I'll try to proxy to a named server but It should work while the proxy can resolve the DNS. I think this should not be related to the protocol anyway.Thanks,
Aitor.
@jc21 commented on GitHub (Dec 13, 2018):
Yeah so I was more thinking the following scenario:
NPM will resolve and find
otherserver.comvia dns, but when it hits that upstream web server in this scenario, the server is running multiple SSL sites on the same web server and differentiating them by the hostname (SNI).With the workaround code above, when you hit
https://myserver.comin your browser, it will send through theHostheader asmyserver.comto the upstream server when in fact it is expectingotherserver.comto be the host header value. While that is easy to code for in this application by changing theHostheader to the upstream server name, it introduces a new problem where the upstream web application might be using fixed URLs in it's content instead of relative ones. So, you requesthttps://myserver.com, the HTML returned has a link tohttps://otherserver.combecause it doesn't know it's behind a reverse proxy.@jc21 commented on GitHub (Dec 13, 2018):
I've pushed this https upstream proxy support to the
jc21/nginx-proxy-manager:developdocker tag. Give it a try and see if it does what you need.@Daxx13 commented on GitHub (Dec 20, 2018):
Hi!
First of all, thanks for the great explaination, you're totally right.
I've tested the dev branch and worked as expected with no vhosts on real servers, or when you're asking for a domain the real server can handle with root or vhost. I can see some issues when you're asking for a domain the real server don't know and you're forwarding to an IP address, but i should test this a bit more.
After all the HTTPS proxy hosts are working. Thanks!
Aitor.
@SaulGoodman1337 commented on GitHub (Dec 21, 2018):
Perfect. just wanted to open a feature request and then I came across this one. works perfectly, thanks a lot !
@jlesage commented on GitHub (Dec 21, 2018):
HTTPs upstream proxy support is a really good feature that covers a common scenario. Thanks! I hope this will be merged in an official release.
@mackcoding commented on GitHub (Jan 1, 2019):
Looking forward to this feature as well!
@jc21 commented on GitHub (Jan 3, 2019):
Added in v2.0.7
@jlesage commented on GitHub (Jan 3, 2019):
Thank you very much!