<div dir="ltr">Hi Francis,<div><br></div><div>Thanks for the response, and sorry for the delay here - I'm new to the mailing list and trying to figure out how the threads and responses are supposed to work (If I am not following the nginx digest's guidelines, please let me know)</div><div><br></div><div><b>> Can you give some specific examples of "I make *this* request, and I want to get *this* response"? It looks like you have a nuxt.js http service listening on port 4001, and you want an <span class="gmail-il">nginx</span> https service to listen on port 443 and reverse-proxy the 4001 service. But your suggested <span class="gmail-il">nginx</span> config seems to try to do something different from that.</b></div><div><div><br></div></div><div><b>So, in simple terms, this is what I have and this is what I want to happen:</b></div><div><br></div><div><ul><li>I have nuxt.js (frontend) running on a specific port, let's say 4001 (this can be changed and does not matter). </li><li>Nuxt.js frontend communicates with my backend APIs running php / laravel, on port 8000 (this port can also be changed and does not matter).</li><li>I will host the frontend on domain: <a href="http://tinyadults.com">tinyadults.com</a>, and apis on <a href="http://api.tinyadults.com">api.tinyadults.com</a> (btw please dont go to these URLs, they're not configured yet).</li><li>Furthermore, users of my site (<a href="http://tinyadults.com">tinyadults.com</a>) will be able to go to <a href="http://tinyadults.com">tinyadults.com</a>, create an account, and in the settings, specify what subdomain and custom domain they want to use. Similar to this <a href="https://downloads.intercomcdn.com/i/o/173567706/0ef0f78954834279ddad732e/image.png">https://downloads.intercomcdn.com/i/o/173567706/0ef0f78954834279ddad732e/image.png</a> as you can see here <a href="https://help.podia.com/en/articles/101242-setting-up-your-custom-domain-name">https://help.podia.com/en/articles/101242-setting-up-your-custom-domain-name</a></li><li>So, a user (say user1) should be able to the app (<a href="http://tinyadults.com">tinyadults.com</a>), specify their own subdomain URL, like <a href="http://user1.tinyadults.com">user1.tinyadults.com</a>, <a href="http://user2.tinyadults.com">user2.tinyadults.com</a> etc. I probably need a nginx config with "wildcard subdomains" to do this, which I also haven't figured out how to do.</li><li>They can also specify a custom domain (that they own), like <a href="http://domain1.com">domain1.com</a> in the admin settings. What should happen is if you go to <a href="http://domain1.com">domain1.com</a>, it would show the contents of that user's subdomain, <a href="http://user1.tinyadults.com">user1.tinyadults.com</a> in this example.</li><li>All of this is exactly like what podia does here: <a href="https://help.podia.com/en/articles/101242-setting-up-your-custom-domain-name">https://help.podia.com/en/articles/101242-setting-up-your-custom-domain-name</a>, but configuring this has been a huge issue for us. It probably requires nginx and some DNS / CNAME changes, and we haven't been able to figure out how to get it to work.</li></ul><div><br></div></div><div>Our current nginx configs can be seen here <a href="https://gist.github.com/connecteev/f16b01e2aadbdcfbeb2e53f1b29cea04">https://gist.github.com/connecteev/f16b01e2aadbdcfbeb2e53f1b29cea04</a></div><div><br></div><div>So far, it's been like shooting darts blindfolded. If you could help figure this out, that would be so appreciated.<br></div><div><br></div><div>Kunal</div><div><br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jul 22, 2020 at 5:00 AM <<a href="mailto:nginx-request@nginx.org">nginx-request@nginx.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Send nginx mailing list submissions to<br>
        <a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="http://mailman.nginx.org/mailman/listinfo/nginx" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx</a><br>
or, via email, send a message with subject or body 'help' to<br>
        <a href="mailto:nginx-request@nginx.org" target="_blank">nginx-request@nginx.org</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:nginx-owner@nginx.org" target="_blank">nginx-owner@nginx.org</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of nginx digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
   1. Wildcard subdomains in Nginx (Kunal Punjabi)<br>
   2. Re: Wildcard subdomains in Nginx (Francis Daly)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Tue, 21 Jul 2020 23:41:31 -0700<br>
From: Kunal Punjabi <<a href="mailto:kunalspunjabi@gmail.com" target="_blank">kunalspunjabi@gmail.com</a>><br>
To: <a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a><br>
Subject: Wildcard subdomains in Nginx<br>
Message-ID:<br>
        <CAOCVYed_pWdtnvXNMUBju7tR6Z1T37WY=<a href="mailto:vEik5f5_OuBWJJWTg@mail.gmail.com" target="_blank">vEik5f5_OuBWJJWTg@mail.gmail.com</a>><br>
Content-Type: text/plain; charset="utf-8"<br>
<br>
I've been struggling with setting up nginx subdomains on my linode instance<br>
and setting up CNAME redirects.<br>
<br>
*What I need is to be able to do:*<br>
<br>
1. First set up wildcard subdomains on my server (<a href="http://tinyadults.com" rel="noreferrer" target="_blank">tinyadults.com</a>), so that<br>
users can go to <a href="http://abc.tinyadults.com" rel="noreferrer" target="_blank">abc.tinyadults.com</a>, <a href="http://xyz.tinyadults.com" rel="noreferrer" target="_blank">xyz.tinyadults.com</a>, etc.<br>
My server is running nuxt.js on port 4001 (default port is 3000 but I chose<br>
to use 4001 as a non-standard port), so I guess I have to use reverse<br>
proxies:<br>
proxy_pass <a href="http://localhost:4001" rel="noreferrer" target="_blank">http://localhost:4001</a>;<br>
<br>
2. Then for my users I need to set up CNAME redirects from <a href="http://domain1.com" rel="noreferrer" target="_blank">domain1.com</a> to<br>
<a href="http://abc.tinyadults.com" rel="noreferrer" target="_blank">abc.tinyadults.com</a>, and from <a href="http://domain2.com" rel="noreferrer" target="_blank">domain2.com</a> to <a href="http://xyz.tinyadults.com" rel="noreferrer" target="_blank">xyz.tinyadults.com</a>, so that if<br>
I visit <a href="http://domain1.com" rel="noreferrer" target="_blank">domain1.com</a> , it would serve the contents (without redirecting me)<br>
of <a href="http://abc.tinyadults.com" rel="noreferrer" target="_blank">abc.tinyadults.com</a>. For testing purposes I have an additional domain (<br>
<a href="http://passivefinance.com" rel="noreferrer" target="_blank">passivefinance.com</a>) that we could use.<br>
<br>
However, I've not been able to get step 1 working. Can someone who is<br>
experienced with nginx setup please guide me?<br>
<br>
Below is my nginx config from sites-available/tinyadults.com.conf:<br>
<br>
server {<br>
<br>
    index index.html index.htm;<br>
<br>
    server_name <a href="http://tinyadults.com" rel="noreferrer" target="_blank">tinyadults.com</a> <a href="http://www.tinyadults.com" rel="noreferrer" target="_blank">www.tinyadults.com</a>;<br>
<br>
<br>
    location / {<br>
<br>
        # WARNING: https in proxy_pass does NOT WORK!! I spent half a day<br>
debugging this.<br>
<br>
        #proxy_pass <a href="https://localhost:4001" rel="noreferrer" target="_blank">https://localhost:4001</a>;<br>
<br>
        proxy_pass <a href="http://localhost:4001" rel="noreferrer" target="_blank">http://localhost:4001</a>;<br>
<br>
        proxy_http_version 1.1;<br>
<br>
        proxy_set_header Upgrade $http_upgrade;<br>
<br>
        proxy_set_header Connection 'upgrade';<br>
<br>
        proxy_set_header Host $host;<br>
<br>
        proxy_cache_bypass $http_upgrade;<br>
<br>
    }<br>
<br>
<br>
    # Kunal: create a custom 404 nginx page, from<br>
<a href="https://www.digitalocean.com/community/tutorials/how-to-configure-nginx-to-use-custom-error-pages-on-ubuntu-14-04" rel="noreferrer" target="_blank">https://www.digitalocean.com/community/tutorials/how-to-configure-nginx-to-use-custom-error-pages-on-ubuntu-14-04</a><br>
<br>
    error_page 404 /custom_404.html;<br>
<br>
    location = /custom_404.html {<br>
<br>
        root /etc/nginx/sites-available/custom_nginx_error_pages;<br>
<br>
        internal;<br>
<br>
    }<br>
<br>
<br>
    listen [::]:4001 ssl http2; # managed by Certbot, modified by Kunal to<br>
add http2<br>
<br>
    listen 4001 ssl http2; # managed by Certbot, modified by Kunal to add<br>
http2<br>
<br>
<br>
    #Install SSL certificates and configure https:// on a per-domain-basis<br>
by running:<br>
<br>
    #sudo certbot --nginx<br>
<br>
    #(when prompted, be sure to select the option to set up redirects from<br>
http to https and effectively "disable" http)<br>
<br>
    ssl_certificate<br>
/etc/letsencrypt/live/tinyadults.com-0001/fullchain.pem; # managed by<br>
Certbot<br>
<br>
    ssl_certificate_key<br>
/etc/letsencrypt/live/tinyadults.com-0001/privkey.pem; # managed by Certbot<br>
<br>
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot<br>
<br>
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot<br>
<br>
<br>
<br>
}<br>
<br>
<br>
server {<br>
<br>
    server_name <a href="http://tinyadults.com" rel="noreferrer" target="_blank">tinyadults.com</a>;<br>
<br>
    if ($host = <a href="http://tinyadults.com" rel="noreferrer" target="_blank">tinyadults.com</a>) {<br>
<br>
        return 301 https://$host$request_uri;<br>
<br>
    } # managed by Certbot<br>
<br>
<br>
    listen 80 default_server;<br>
<br>
    listen [::]:80 default_server;<br>
<br>
    return 404; # managed by Certbot<br>
<br>
}<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://mailman.nginx.org/pipermail/nginx/attachments/20200721/85055f7d/attachment-0001.htm" rel="noreferrer" target="_blank">http://mailman.nginx.org/pipermail/nginx/attachments/20200721/85055f7d/attachment-0001.htm</a>><br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Wed, 22 Jul 2020 11:52:11 +0100<br>
From: Francis Daly <<a href="mailto:francis@daoine.org" target="_blank">francis@daoine.org</a>><br>
To: <a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a><br>
Subject: Re: Wildcard subdomains in Nginx<br>
Message-ID: <<a href="mailto:20200722105211.GV20939@daoine.org" target="_blank">20200722105211.GV20939@daoine.org</a>><br>
Content-Type: text/plain; charset=us-ascii<br>
<br>
On Tue, Jul 21, 2020 at 11:41:31PM -0700, Kunal Punjabi wrote:<br>
<br>
Hi there,<br>
<br>
> I've been struggling with setting up nginx subdomains on my linode instance<br>
> and setting up CNAME redirects.<br>
<br>
I don't fully understand what you are trying to do here.<br>
<br>
For example -- what do you mean by a CNAME redirect?<br>
<br>
> *What I need is to be able to do:*<br>
> <br>
> 1. First set up wildcard subdomains on my server (<a href="http://tinyadults.com" rel="noreferrer" target="_blank">tinyadults.com</a>), so that<br>
> users can go to <a href="http://abc.tinyadults.com" rel="noreferrer" target="_blank">abc.tinyadults.com</a>, <a href="http://xyz.tinyadults.com" rel="noreferrer" target="_blank">xyz.tinyadults.com</a>, etc.<br>
<br>
server_name *.<a href="http://tinyadults.com" rel="noreferrer" target="_blank">tinyadults.com</a>;<br>
<br>
(See <a href="http://nginx.org/r/server_name" rel="noreferrer" target="_blank">http://nginx.org/r/server_name</a>)<br>
<br>
Or, if the names should be handled differently:<br>
<br>
server { server_name <a href="http://abc.tinyadults.com" rel="noreferrer" target="_blank">abc.tinyadults.com</a>; }<br>
server { server_name <a href="http://xyz.tinyadults.com" rel="noreferrer" target="_blank">xyz.tinyadults.com</a>; }<br>
<br>
> My server is running nuxt.js on port 4001 (default port is 3000 but I chose<br>
> to use 4001 as a non-standard port), so I guess I have to use reverse<br>
> proxies:<br>
> proxy_pass <a href="http://localhost:4001" rel="noreferrer" target="_blank">http://localhost:4001</a>;<br>
<br>
Ok. Does your nuxt.js service care whether the original request was for<br>
the hostname abc or xyz? If so, you may want to indicate to it what the<br>
original hostname was.<br>
<br>
> 2. Then for my users I need to set up CNAME redirects from <a href="http://domain1.com" rel="noreferrer" target="_blank">domain1.com</a> to<br>
> <a href="http://abc.tinyadults.com" rel="noreferrer" target="_blank">abc.tinyadults.com</a>, and from <a href="http://domain2.com" rel="noreferrer" target="_blank">domain2.com</a> to <a href="http://xyz.tinyadults.com" rel="noreferrer" target="_blank">xyz.tinyadults.com</a>, so that if<br>
> I visit <a href="http://domain1.com" rel="noreferrer" target="_blank">domain1.com</a> , it would serve the contents (without redirecting me)<br>
> of <a href="http://abc.tinyadults.com" rel="noreferrer" target="_blank">abc.tinyadults.com</a>.<br>
<br>
I don't know what you mean by that.<br>
<br>
Might it be<br>
<br>
server { server_name <a href="http://abc.tinyadults.com" rel="noreferrer" target="_blank">abc.tinyadults.com</a> <a href="http://domain1.com" rel="noreferrer" target="_blank">domain1.com</a>; }<br>
<br>
or perhaps<br>
<br>
server { server_name <a href="http://domain1.com" rel="noreferrer" target="_blank">domain1.com</a>;<br>
  location / { proxy_pass <a href="https://abc.tinyadults.com" rel="noreferrer" target="_blank">https://abc.tinyadults.com</a>; }<br>
}<br>
<br>
?<br>
<br>
> However, I've not been able to get step 1 working. Can someone who is<br>
> experienced with nginx setup please guide me?<br>
<br>
Can you give some specific examples of "I make *this* request, and I<br>
want to get *this* response"?<br>
<br>
It looks like you have a nuxt.js http service listening on port 4001, and<br>
you want an nginx https service to listen on port 443 and reverse-proxy<br>
the 4001 service.<br>
<br>
But your suggested nginx config seems to try to do something different<br>
from that.<br>
<br>
Good luck with it,<br>
<br>
        f<br>
-- <br>
Francis Daly        <a href="mailto:francis@daoine.org" target="_blank">francis@daoine.org</a><br>
<br>
<br>
------------------------------<br>
<br>
Subject: Digest Footer<br>
<br>
_______________________________________________<br>
nginx mailing list<br>
<a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx</a><br>
<br>
------------------------------<br>
<br>
End of nginx Digest, Vol 129, Issue 24<br>
**************************************<br>
</blockquote></div>