https-portal
https-portal copied to clipboard
Redirect is not working for me.
I have:
DOMAINS: 'www.howismy.com => https://howismy.com, howismy.com -> http://api:3000'
but going to
www.howismy.com
redirects to
here is the redirect:
Hi,
I can't reproduce the problem. Could you see which version is your nginx-portal? Maybe try to upgrade to the latest?
I just upgraded to the latest:
/var/www/howismy# dc images
howismy_https-portal_1 steveltn/https-portal 1 25827a1239fd 284 MB
I also removed the redirect:
DOMAINS: 'howismy.com -> http://api:3000'
its still sending the 301 redirect to the wrong place:
/etc/nginx# cat conf.d/howismy.com.conf
server {
listen 80;
server_name howismy.com;
location / {
return 301 https://$server_name$request_uri;
}
location /.well-known/acme-challenge/ {
allow all;
alias /var/www/default/challenges/;
try_files $uri =404;
}
}
Is it possible that 301 could some how turn www.howismy.com to https://https://howismy.com?
That doesn't look like the latest code to me. Before, you only needed to do example.com => another.com
, but people constantly put https:
there. So I made a modification that either with or without https
prefix, it works in both cases.
Please make sure it says 1.7.3
when launching. You can specifically write 1.7.3 in docker-compose.yml and do a docker-compose pull https-portal
.
https-portal:
image: steveltn/https-portal:1.7.3
ports:
- '80:80'
- '443:443'
links:
- api
restart: always
environment:
DOMAINS: 'www.howismy.com => howismy.com,howismy.com -> http://api:3000'
STAGE: 'production'
3fe0eba7cd93 steveltn/https-portal:1.7.3 "/init" 4 minutes ago Up 4 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp howismy_https-portal_1
root@3fe0eba7cd93:/etc/nginx# cat conf.d/howismy.com.conf
server {
listen 80;
server_name howismy.com;
location / {
return 301 https://$server_name$request_uri;
}
location /.well-known/acme-challenge/ {
allow all;
alias /var/www/default/challenges/;
try_files $uri =404;
}
}
root@3fe0eba7cd93:/etc/nginx# cat conf.d/www.howismy.com.conf
server {
listen 80;
server_name www.howismy.com;
location / {
return 301 https://howismy.com$request_uri;
}
location /.well-known/acme-challenge/ {
allow all;
alias /var/www/default/challenges/;
try_files $uri =404;
}
}
Still getting:
Its now working:
https-portal:
image: steveltn/https-portal:latest
ports:
- '80:80'
- '443:443'
links:
- api
restart: always
environment:
DOMAINS: 'www.howismy.com => howismy.com,howismy.com -> http://api:3000'
STAGE: 'production'
It now works. Maybe update the docs to use latest
and to remove the https
from the redirect example. Thank you so much @SteveLTN. This image is amazing and has made my life soo much better!
Latest is 1.7.3 . I don't know how, but you seems to be stuck with an old version.
My sysop friend just got back to me:
Does the container handle this?
HTTPS-PORTAl create two certs for each site you specify in the DOMAIN
. In this case, you have
DOMAINS: 'www.howismy.com => howismy.com,howismy.com -> http://api:3000'
which will create two certs, one for www.howismy.com
and another for howismy.com
, served on the two domains respectively.
Now that you got howismy.com
certs on www.howismy.com
. That doesn't make any sense to me. I have no idea how it would behave like this. Apart from that, when I proceed with the invalid cert, the page doesn't perform its redirection as expected, but returns RemoteDisconnected
. Seems like HTTPS-PORTAL is not functioning at all.
As a example, here is my full docker-compose.yml
.
version: '3'
services:
https-portal:
image: steveltn/https-portal:latest
ports:
- '80:80'
- '443:443'
restart: always
environment:
DOMAINS: 'test2.steveltn.me => test.steveltn.me,test.steveltn.me'
STAGE: 'production'
You can visit test2.steveltn.me
to try it out.
Could you cat /etc/nginx/conf.d/www.howismy.com.ssl.conf
in your container?
It doesn't exist
root@3fe0eba7cd93:~# ls -l /etc/nginx/conf.d/
total 12
-rw-r--r-- 1 root root 308 Sep 12 05:14 howismy.com.conf
-rw-r--r-- 1 root root 1088 Sep 12 05:14 howismy.com.ssl.conf
-rw-r--r-- 1 root root 311 Sep 12 05:14 www.howismy.com.conf
Traceback (most recent call last):
File "/bin/acme_tiny", line 198, in <module>
main(sys.argv[1:])
File "/bin/acme_tiny", line 194, in main
signed_crt = get_crt(args.account_key, args.csr, args.acme_dir, log=LOGGER, CA=args.ca, disable_check=args.disable_check, directory_url=args.directory_url, contact=args.contact)
File "/bin/acme_tiny", line 150, in get_crt
raise ValueError("Challenge did not pass for {0}: {1}".format(domain, authorization))
ValueError: Challenge did not pass for www.howismy.com: {u'status': u'invalid', u'challenges': [{u'status': u'invalid', u'url': u'https://acme-v02.api.letsencrypt.org/acme/chall-v3/303003853/ZaaPsg', u'token': u'2OLbfoGOSybwjF5ypRYhMSrCOC4_7WHPcbZylgnK4Dw', u'type': u'http-01', u'error': {u'status': 400, u'type': u'urn:ietf:params:acme:error:dns', u'detail': u'DNS problem: NXDOMAIN looking up A for www.howismy.com'}}, {u'status': u'invalid', u'url': u'https://acme-v02.api.letsencrypt.org/acme/chall-v3/303003853/g3dFbA', u'token': u'2OLbfoGOSybwjF5ypRYhMSrCOC4_7WHPcbZylgnK4Dw', u'type': u'dns-01'}, {u'status': u'invalid', u'url': u'https://acme-v02.api.letsencrypt.org/acme/chall-v3/303003853/zotFxA', u'token': u'2OLbfoGOSybwjF5ypRYhMSrCOC4_7WHPcbZylgnK4Dw', u'type': u'tls-alpn-01'}], u'identifier': {u'type': u'dns', u'value': u'www.howismy.com'}, u'expires': u'2019-09-19T05:14:10Z'}
================================================================================
Failed to sign www.howismy.com, is DNS set up properly?
================================================================================
Failed to obtain certs for www.howismy.com
Sorry for the late reply. I sort of forgot about this after a vacation :-(
Did you have any luck? Try update to the latest version plz, if you are still on it.
The 301
redirect was served from disk cache, where it can be stored indefinitely, as it is labelled as a permanent redirect. So you probably were using a =>
redirect earlier, which is still cached in the browser. Clearing the browser cache manually should fix that one (and #295 changes the default to temporary redirects).
BTW: I think your DNS configuration looks dangerous. I think with a CNAME
to the apex @
(www
and ftp
lines), you are likely to run into trouble, as the CNAME
mirrors everything, not only the A
(address), but also NS
(name servers) and an increasing number of other configuration records further down the line. (The opposite, having a CNAME
from @
, is definitely not possible.)
So, A www 206.189.73.129
and A ftp 206.189.73.129
would be safer (or A host 206.189.73.129
, CNAME www host
, and CNAME ftp host
, if you wanted to limit the number of places where you have to change the IP address down to 2, which I believe is the minimum).