我有一个反应网站,我在运行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;
}
。
可能导致此问题的原因是什么?
答案 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.jshttp://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;
}