重写模块适合代理来自nginx的不同expressjs路由吗?

我有一个运行在docker容器中的expressjs节点服务器。 对于这个例子,它只有一个路由:GET /user返回一个简单的JSON对象。

我也有一个nginx服务器代理这个快递服务器使用:

 location /api { rewrite ^/api/(.*) /$1 break; proxy_pass http://nodeapp:3000/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded_For $proxy_add_x_forwarded_for; } 

在我的index.js我使用url /api/user创build了一个XMLHttpRequest。

是重写模块, rewrite ^/api/(.*) /$1 break; ,在我的快递应用程序中代理路线的有效解决scheme? 还有其他的select吗? 虽然这工作的东西似乎“closures”,我不得不使用正则expression式这样的事情。 我不做devops的工作,只能玩弄nginx,所以如果有更好的解决scheme,我将不胜感激,如果你能指出我在正确的方向。

简单的在你的位置添加一个斜杠应该使nginx隐含地执行相同的转换。

 location /api/ { proxy_pass http://nodeapp:3000/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded_For $proxy_add_x_forwarded_for; } 

详情请参阅此文件 。