What I want to do is: When someone visits http://localhost/route/abc
the server responds exactly the same as http://localhost:9000/abc
Now I configure my Nginx server like this:
location /route {
proxy_pass http://127.0.0.1:9000;
}
The HTTP request is dispatched to port 9000
correctly, but the path it receives is http://localhost:9000/route/abc
not http://localhost:9000/abc
.
Any suggestions?
I hate the subtlety here, but try adding a / at the end of 9000 like below. It will no longer append "route" to the forwarded request now.
I believe you can use rewrite to remove the extra part of the URL. In your case I think you could use:
However if your app has internal links in it, they may still point to /abc/foo , and if you do this they instead need to point to /route/abc/foo so that the raw request comes in correctly. You may be better off leaving the nginx config as it is and instead configuring your app to be aware it lives at a subdirectory, if you can.
I know this is an old question, but it was the top google hit for me when I was trying to solve the same issue!
Try the following
vim
nginx.conf
This code listens on 8080 and redirects to port 8787 on compute-1-36. You can select other path in location
/