2

I was trying a lot of other post solutions here and no one can help me to solve my problem. I have a simple nginx configuration with https and a node.js app with the main path / and for a subdomain another path /api. I can access to mywebapp.com correctly, but if I try to access to api.mywebapp.com it redirects me to the "Welcome to nginx" page. I have the DNS record api.mywebapp.com pointing to my server ip address.

This is my nginx config blocks:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name mywebapp.com;

    # SSL
    include /etc/letsencrypt/mycerts.conf;
    include /etc/letsencrypt/options-ssl-nginx.conf;

    # reverse proxy
    location / {
        proxy_pass http://localhost:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_cache_bypass $http_upgrade;
    }
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name api.mywebapp.com;

    # SSL 
    include /etc/letsencrypt/mycerts.conf;      
    include /etc/letsencrypt/options-ssl-nginx.conf;

    location /api {
        limit_req zone=mylimit;
        proxy_pass http://localhost:8000/api;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_cache_bypass $http_upgrade;
    }
}

What I'm missing?

1
  • Does it actually redirect you, or does it just show the welcome page? Are you actually trying to reach api.mywebapp.com via https? The output of wget --spider -S https://api.mywebapp.com could be helpful. Aug 27, 2018 at 9:10

1 Answer 1

4

You configured your proxy for

location /api {
  # ...
}

So it is only reachable with https://api.mywebapp.com/api/.

You most probably want to change this to

location / {
  proxy_pass http://localhost:8000/api;  # <- keep this
  # ...
}
0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .