nginxwebservernginx-config

How to configure nginx to redirect subdomain to another directory


I have an application that I wish that once I access my subdomain portfolio.jamelaumn.com to be redirected to my localhost/portfolio how would I achieve that?

my configuration;

server {
    listen 80;
    server_name jamelaumn.com *.jamelaumn.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name jamelaumn.com *.jamelaumn.com;
    ssl_certificate /etc/letsencrypt/live/jamelaumn.com-0001/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/jamelaumn.com-0001/privkey.pem;


    location /static/ {
        alias /home/jamelaumn/myproject/deploystatic/;
    }

    location /media/ {
        alias /home/jamelaumn/myproject/media/;
    }
    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Solution

  • Try using:

    server {
      listen 80;
      server_name portfolio.jamelaumn.com; # So this server block handles that subdomain
      return 301 https://jamelaumn.com/portfolio$request_uri; # Redirect to your main domain with the subdirectory portfolio
    }
    

    You can also redirect it, if someone requests with https, you just need a valid ssl cert for that:

    server {
      listen 443 ssl;
      server_name portfolio.jamelaumn.com; # So this server block handles that subdomain
      
      # SSL Configuration
      ssl_certificate /etc/letsencrypt/live/jamelaumn.com-0001/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/jamelaumn.com-0001/privkey.pem;
      
      return 301 https://jamelaumn.com/portfolio$request_uri; # Redirect to your main domain with the subdirectory portfolio
    }