skip to Main Content

I have a NodeJS backend running on a server on port 3000
the requests are arriving on port 80
now in /etc/nginx/sites-available/node I have the following config

server {

listen 80 default_server;


server_name name.example;


return 301 http://195.x.x.x:3000;

}

when a request reach the server it redirects to port 3000
but when a request like http://195.x.x.x/api/test/test
it also redirects to http://195.x.x.x:3000
how can I redirect to port 3000 and keep the same url like http://195.x.x.x:3000/api/test/test

2

Answers


  1. Chosen as BEST ANSWER

    Found the answer right after posting the question it was $request_uri I should have but

    server {
    
    listen 80 default_server;
    
    
    server_name name.example;
    
    
    return 301 http://195.x.x.x:3000$request_uri;
    }
    

  2. Why are you returning a 301 code, if you just want to forward requests and return them through your server you would be better using proxy_pass why are you redirecting them?

    You can setup a reverse proxy using NGINX like this:

    server {
        listen 80;
        server_name name.example;
    
        location / {
            proxy_set_header   X-Forwarded-For $remote_addr;
            proxy_set_header   Host $http_host;
            proxy_pass         http://195.x.x.x:3000;
        }
    }
    

    However if you truly do want to redirect them, you should change return 301 http://195.x.x.x:3000; to return 301 http://195.x.x.x:3000$request_uri;

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search