2013-06-12 43 views
1

我有一个node.js应用程序运行在我局域网内的树莓派上。但是现在我想从网络上访问它。我有一个nginx服务器通过http和https运行和提供内容。Node.JS在不同的机器上用Nginx反向代理

对于https/ssl端点,我有一个简单的非通配符证书。这限制了我www.foo.com和foo.com。所以我不能做nodeapp.foo.com。所以我的计划B正在制作foo.com/nodeapp。

我配置了这个,它对动态内容工作正常,但静态内容不会加载,因为在生成的html中使用的url指向例如。 foo.com/js/jquery.js而不是foo.com/nodeapp/js/jquery.js

任何人都可以给我指出如何设置它。我尝试了各种各样的东西(在nginx中重写url,在node.js中重写url),但我迷路了。

+0

我可能会误解这种情况,但为什么不改变生成html的代码(我假设正在使用模板或正在使用的模板)来引用/nodeapp/js/jquery.js而不是/js/jquery.js。 – BrandonKowalski

回答

1

据我了解你的问题,你从你的Node应用程序提供静态内容。更好的方法是从Node应用程序中移动静态内容,并让Nginx提供静态内容。只需将您的静态内容(例如./js,/ css,/ images)复制到您的nginx www目录中即可。在你的情况下,你将获得更好的性能,并且你将节省你的树莓资源。如果它会干扰您现有的www内容,请将它们移到额外的目录(例如./resources/js,/resources/css,...)并相应地更改您的html。