从Apache到使用路由器运行ReactJS的Nginx docker的反向代理
目前,我有一台运行Apache的服务器,它也被配置为充当反向代理。在同一台服务器上,我有一个Nginx docker运行一个ReactJS网站,带有一个带有路由器的ReactJS应用程序。目标是建立一个从apache服务器到nginx docker的反向代理,以便人们访问在所述nginx docker容器上运行的React应用程序 这是我的apache2配置:从Apache到使用路由器运行ReactJS的Nginx docker的反向代理,reactjs,apache,nginx,react-router,uri,Reactjs,Apache,Nginx,React Router,Uri,目前,我有一台运行Apache的服务器,它也被配置为充当反向代理。在同一台服务器上,我有一个Nginx docker运行一个ReactJS网站,带有一个带有路由器的ReactJS应用程序。目标是建立一个从apache服务器到nginx docker的反向代理,以便人们访问在所述nginx docker容器上运行的React应用程序 这是我的apache2配置: <VirtualHost *:80> ServerName example.com Serv
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyPreserveHost On
ProxyPass /foo http://localhost:10080
ProxyPassReverse /foo http://localhost:10080
</VirtualHost>
最后,这是Nginx default.conf文件
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
通过直接访问React应用程序可以正常工作,但如果有人访问,它将被代理并返回空白页,因为不存在/foo路由
到目前为止,我已经尝试了一些导致404或空白页面的事情:
- 通过删除Apache中的/foo部分重写URI
- 在/usr/share/nginx/html中添加了一个foo目录
- 通过删除Nginx中的/foo重写URI,然后将其代理给self
- 将React路由器的basename设置为/foo
感谢所有花时间阅读本文的人。如果有人能帮助我,我将不胜感激 > P>你应该考虑用APACHE服务你的应用程序,这样你就不需要并排运行2个Web服务器了。 Apaches mod_rewrite可用于为React路由器重写URL 这是一个关于如何配置Apache以使用JavaScript路由的优秀教程 下面是关于mod_rewrite的Apache文档。 当然,您也可以使用Nginx提供react,也可以让Nginx进行代理
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}