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
CodePudding user response:
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;
CodePudding user response:
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;
}