Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Redirect in nginx form port 80 to port 3000 but keeping the url the same

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

like image 717
Yaman Avatar asked Aug 08 '26 07:08

Yaman


1 Answers

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;

like image 166
Joss Bird Avatar answered Aug 09 '26 21:08

Joss Bird



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!