nginx Digest, Vol 129, Issue 24

Kunal Punjabi kunalspunjabi at gmail.com
Thu Jul 23 21:30:42 UTC 2020


Hi Francis,

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)

*> 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 nginx https service to listen on
port 443 and reverse-proxy the 4001 service. But your
suggested nginx config seems to try to do something different from that.*

*So, in simple terms, this is what I have and this is what I want to
happen:*


   - I have nuxt.js (frontend) running on a specific port, let's say 4001
   (this can be changed and does not matter).
   - Nuxt.js frontend communicates with my backend APIs running php /
   laravel, on port 8000 (this port can also be changed and does not matter).
   - I will host the frontend on domain: tinyadults.com, and apis on
   api.tinyadults.com (btw please dont go to these URLs, they're not
   configured yet).
   - Furthermore, users of my site (tinyadults.com) will be able to go to
   tinyadults.com, create an account, and in the settings, specify what
   subdomain and custom domain they want to use. Similar to this
   https://downloads.intercomcdn.com/i/o/173567706/0ef0f78954834279ddad732e/image.png
   as you can see here
   https://help.podia.com/en/articles/101242-setting-up-your-custom-domain-name
   - So, a user (say user1) should be able to the app (tinyadults.com),
   specify their own subdomain URL, like user1.tinyadults.com,
   user2.tinyadults.com etc. I probably need a nginx config with "wildcard
   subdomains" to do this, which I also haven't figured out how to do.
   - They can also specify a custom domain (that they own), like domain1.com
   in the admin settings. What should happen is if you go to domain1.com,
   it would show the contents of that user's subdomain, user1.tinyadults.com
   in this example.
   - All of this is exactly like what podia does here:
   https://help.podia.com/en/articles/101242-setting-up-your-custom-domain-name,
   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.


Our current nginx configs can be seen here
https://gist.github.com/connecteev/f16b01e2aadbdcfbeb2e53f1b29cea04

So far, it's been like shooting darts blindfolded. If you could help figure
this out, that would be so appreciated.

Kunal




On Wed, Jul 22, 2020 at 5:00 AM <nginx-request at nginx.org> wrote:

> Send nginx mailing list submissions to
>         nginx at nginx.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         http://mailman.nginx.org/mailman/listinfo/nginx
> or, via email, send a message with subject or body 'help' to
>         nginx-request at nginx.org
>
> You can reach the person managing the list at
>         nginx-owner at nginx.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of nginx digest..."
>
>
> Today's Topics:
>
>    1. Wildcard subdomains in Nginx (Kunal Punjabi)
>    2. Re: Wildcard subdomains in Nginx (Francis Daly)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Tue, 21 Jul 2020 23:41:31 -0700
> From: Kunal Punjabi <kunalspunjabi at gmail.com>
> To: nginx at nginx.org
> Subject: Wildcard subdomains in Nginx
> Message-ID:
>         <CAOCVYed_pWdtnvXNMUBju7tR6Z1T37WY=
> vEik5f5_OuBWJJWTg at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> I've been struggling with setting up nginx subdomains on my linode instance
> and setting up CNAME redirects.
>
> *What I need is to be able to do:*
>
> 1. First set up wildcard subdomains on my server (tinyadults.com), so that
> users can go to abc.tinyadults.com, xyz.tinyadults.com, etc.
> My server is running nuxt.js on port 4001 (default port is 3000 but I chose
> to use 4001 as a non-standard port), so I guess I have to use reverse
> proxies:
> proxy_pass http://localhost:4001;
>
> 2. Then for my users I need to set up CNAME redirects from domain1.com to
> abc.tinyadults.com, and from domain2.com to xyz.tinyadults.com, so that if
> I visit domain1.com , it would serve the contents (without redirecting me)
> of abc.tinyadults.com. For testing purposes I have an additional domain (
> passivefinance.com) that we could use.
>
> However, I've not been able to get step 1 working. Can someone who is
> experienced with nginx setup please guide me?
>
> Below is my nginx config from sites-available/tinyadults.com.conf:
>
> server {
>
>     index index.html index.htm;
>
>     server_name tinyadults.com www.tinyadults.com;
>
>
>     location / {
>
>         # WARNING: https in proxy_pass does NOT WORK!! I spent half a day
> debugging this.
>
>         #proxy_pass https://localhost:4001;
>
>         proxy_pass http://localhost:4001;
>
>         proxy_http_version 1.1;
>
>         proxy_set_header Upgrade $http_upgrade;
>
>         proxy_set_header Connection 'upgrade';
>
>         proxy_set_header Host $host;
>
>         proxy_cache_bypass $http_upgrade;
>
>     }
>
>
>     # Kunal: create a custom 404 nginx page, from
>
> https://www.digitalocean.com/community/tutorials/how-to-configure-nginx-to-use-custom-error-pages-on-ubuntu-14-04
>
>     error_page 404 /custom_404.html;
>
>     location = /custom_404.html {
>
>         root /etc/nginx/sites-available/custom_nginx_error_pages;
>
>         internal;
>
>     }
>
>
>     listen [::]:4001 ssl http2; # managed by Certbot, modified by Kunal to
> add http2
>
>     listen 4001 ssl http2; # managed by Certbot, modified by Kunal to add
> http2
>
>
>     #Install SSL certificates and configure https:// on a per-domain-basis
> by running:
>
>     #sudo certbot --nginx
>
>     #(when prompted, be sure to select the option to set up redirects from
> http to https and effectively "disable" http)
>
>     ssl_certificate
> /etc/letsencrypt/live/tinyadults.com-0001/fullchain.pem; # managed by
> Certbot
>
>     ssl_certificate_key
> /etc/letsencrypt/live/tinyadults.com-0001/privkey.pem; # managed by Certbot
>
>     include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
>
>     ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
>
>
>
> }
>
>
> server {
>
>     server_name tinyadults.com;
>
>     if ($host = tinyadults.com) {
>
>         return 301 https://$host$request_uri;
>
>     } # managed by Certbot
>
>
>     listen 80 default_server;
>
>     listen [::]:80 default_server;
>
>     return 404; # managed by Certbot
>
> }
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <
> http://mailman.nginx.org/pipermail/nginx/attachments/20200721/85055f7d/attachment-0001.htm
> >
>
> ------------------------------
>
> Message: 2
> Date: Wed, 22 Jul 2020 11:52:11 +0100
> From: Francis Daly <francis at daoine.org>
> To: nginx at nginx.org
> Subject: Re: Wildcard subdomains in Nginx
> Message-ID: <20200722105211.GV20939 at daoine.org>
> Content-Type: text/plain; charset=us-ascii
>
> On Tue, Jul 21, 2020 at 11:41:31PM -0700, Kunal Punjabi wrote:
>
> Hi there,
>
> > I've been struggling with setting up nginx subdomains on my linode
> instance
> > and setting up CNAME redirects.
>
> I don't fully understand what you are trying to do here.
>
> For example -- what do you mean by a CNAME redirect?
>
> > *What I need is to be able to do:*
> >
> > 1. First set up wildcard subdomains on my server (tinyadults.com), so
> that
> > users can go to abc.tinyadults.com, xyz.tinyadults.com, etc.
>
> server_name *.tinyadults.com;
>
> (See http://nginx.org/r/server_name)
>
> Or, if the names should be handled differently:
>
> server { server_name abc.tinyadults.com; }
> server { server_name xyz.tinyadults.com; }
>
> > My server is running nuxt.js on port 4001 (default port is 3000 but I
> chose
> > to use 4001 as a non-standard port), so I guess I have to use reverse
> > proxies:
> > proxy_pass http://localhost:4001;
>
> Ok. Does your nuxt.js service care whether the original request was for
> the hostname abc or xyz? If so, you may want to indicate to it what the
> original hostname was.
>
> > 2. Then for my users I need to set up CNAME redirects from domain1.com
> to
> > abc.tinyadults.com, and from domain2.com to xyz.tinyadults.com, so that
> if
> > I visit domain1.com , it would serve the contents (without redirecting
> me)
> > of abc.tinyadults.com.
>
> I don't know what you mean by that.
>
> Might it be
>
> server { server_name abc.tinyadults.com domain1.com; }
>
> or perhaps
>
> server { server_name domain1.com;
>   location / { proxy_pass https://abc.tinyadults.com; }
> }
>
> ?
>
> > However, I've not been able to get step 1 working. Can someone who is
> > experienced with nginx setup please guide me?
>
> 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 nginx https service to listen on port 443 and reverse-proxy
> the 4001 service.
>
> But your suggested nginx config seems to try to do something different
> from that.
>
> Good luck with it,
>
>         f
> --
> Francis Daly        francis at daoine.org
>
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
>
> ------------------------------
>
> End of nginx Digest, Vol 129, Issue 24
> **************************************
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20200723/5deae670/attachment-0001.htm>


More information about the nginx mailing list