'React Router Removes server prefix (Reverse Proxy)
I am trying to run a React Application behind a reverse proxy server that has a prefix(say root-prefix
) and secondary prefix(say subdirectory/path
).
The final URL is of form https://myserver.com/root-prefix/subdirectory/path
I have added basename
for subdirectory:
<BrowserRouter basename="/subdirectory/path">
<Header />
<Switch>
<Route
path="/componentA"
component={componentA}
/>
<Route
path="/componentB"
component={componentB}
/>
</Switch>
<Footer />
</BrowserRouter>
Server URL: https://myserver.com/root-prefix/subdirectory/path
: This renders a path with Header and Footer without Main content.
When I hit specific a component it renders but is the of form https://myserver.com/subdirectory/path/componentA
(Note root-prefix
is removed.)
My nginx.conf
http {
server {
location ^~ /subdirectory/path {
# proxy_pass ${upstream}; # Getting 502: Bad Gateway
absolute_redirect off;
add_header Access-Control-Expose-Headers "Origin";
add_header Access-Control-Allow-Methods "GET,POST,PUT,DELETE";
try_files $uri $uri/ /index.html;
}
}
}
Is React Router removing root-prefix
internally. If so, what is the approach for allowing root-prefix
for all components.
Note: Prefixing root-prefix
in location
of Nginx gives 404 for the entire application.
Solution 1:[1]
you need to include the root-prefix
in the basename:
<BrowserRouter basename="/root-prefix/subdirectory/path">
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Taxel |