从子文件夹服务Express.JS应用程序

我使用nginx来为同一个域下的静态html网站和expressjs应用程序提供服务。 我的nginxconfiguration如下所示:

location / { try_files $uri $uri/ /index.html; autoindex off; root /var/www/example.com/static/; } location /admin { proxy_pass http://localhost:3007/; proxy_set_header Host $host; proxy_buffering off; autoindex off; } 

我能够访问我的应用程序在端口3007上运行,如果我访问example.com/admin,所以似乎我的app.get('/', routes.index); 正在工作,但我有一些麻烦让我的其他路线工作。

例如:

 app.get('/admin/test', function(req, res) { console.log("test!") }); 

如果我尝试访问example.com/admin/test我将只看到根据我的日志Cannot GET //test和404:

 GET //test 404 11ms 

如果我改变/testing路线是同样的问题。 任何指针有什么问题在那里。 我还没有find相对于它们被挂载到的基本path(/ admin)的路线。

谢谢!

注意斜线:

 location /admin { proxy_pass http://localhost:3007/; # here … } 

如果你删除它,真正的请求URI将被代理。

您也可以使用Nginx删除/admin部分:

 location ~ ^/admin($|/.*$) { proxy_pass http://localhost:3007$1; … }