Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Apache到使用路由器运行ReactJS的Nginx docker的反向代理_Reactjs_Apache_Nginx_React Router_Uri - Fatal编程技术网

从Apache到使用路由器运行ReactJS的Nginx docker的反向代理

从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

目前,我有一台运行Apache的服务器,它也被配置为充当反向代理。在同一台服务器上,我有一个Nginx docker运行一个ReactJS网站,带有一个带有路由器的ReactJS应用程序。目标是建立一个从apache服务器到nginx docker的反向代理,以便人们访问在所述nginx docker容器上运行的React应用程序

这是我的apache2配置:

<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
在这一点上,我意识到我对URI是如何与之交互的理解是有限的,所以如果有人能给我指出正确的方向,我将不胜感激。虽然我使用Apache作为反向代理的事实超出了我的控制范围,但如果有人认为我在做一些非常愚蠢或低效的事情,我愿意接受其他建议


感谢所有花时间阅读本文的人。如果有人能帮助我,我将不胜感激

> 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;
    }
}