React router和nginx给出意外令牌<

时间:2017-11-25 21:46:29

标签: reactjs nginx react-router

我有一个反应网站,我在运行Nginx的Docker容器中托管,我在端口3000上运行。然后我的主机上有一个Nginx实例,我有一个反向代理指向{ {1}}。

一切正常,除了我有一个使用回调的Twitter身份验证调用。当网址指向127.0.0.1:3000时,这会向Nginx询问当然会失败的路径。

我已经浏览过互联网,发现很多帖子表明我应该在我的nginx默认文件中有这个:

mysite.com/authenticated

当我然后导航到我的网站,甚至根目录时,我在控制台错误中得到location / { proxy_pass 127.0.0.1:3000; try_files $uri $uri/ /index.html; }

可能导致此问题的原因是什么?

3 个答案:

答案 0 :(得分:0)

假设您正在调用外部Twitter api http://twitter/auth.com/twitter/authentication进行身份验证。 在您的react操作文件中,您已将url作为/twitter/authentication进行调用。对于这种情况,以下将是配置。

server { 

location / {
        proxy_pass http://127.0.0.1:3000;
    }
location /twitter/authentication  {
       proxy_pass http://twitter/auth.com;
       }
}

您必须在nginx配置中编写服务器内的每个位置配置。 在此配置中进行任何修改后,您已重新启动nginx。

答案 1 :(得分:0)

对我而言,它是app.js

的链接
<script src="/app/bundle.js"></script>

当我尝试通过

访问我的应用时
http://localhost:8080/serv9090

浏览器试图通过

找到/app/bundle.js
http://localhost:8080/app/bundle.js

在localhost找不到:8080(nginx) 第一次尝试我改变了

<script src="/app/bundle.js"></script>

<script src="http://localhost:8080/serv9090/app/bundle.js"></script>

这很好用。 希望这有帮助。

答案 2 :(得分:0)

我通过将以下内容添加到nginx conf文件中解决了此问题:

location ~ .(static)/(js|css|media)/(.+)$ {
        try_files $uri $uri/ /$1/$2/$3;
}