将所有未处理的请求redirect到/在nginx中

我必须设置一个有NodeJS后端和一个React webapp前端的服务器。 Nginx和Node应用程序在单独的docker容器中运行,我想这样做:

  • 所有前缀为/api请求都将重新路由到NodeJS应用程序
  • 所有的文件请求将由nginx(html,css,js等)提供,404如果找不到。
  • 其他每个请求都应该被redirect/ (即前端应用程序)

最后一条规则是需要的,因为这些路由在ReactJS内部处理,但是如果有人重新加载页面,它将得到一个404,因为nginx会尝试加载profile文件。

这是我目前的configuration

 server { listen 80; root /var/www/myapp; error_page 404 /404.html; location /api { proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_set_header Connection ""; proxy_http_version 1.1; proxy_pass http://app:61337; } location ~* \.(js|css|gif|jpg|jpeg|map|png|svg|ttf|eot|woff|woff2|json|ico)$ { root /var/www/myapp; } location / { // Something needs to be here I guess } } 

我想使它有限的端口不同于80 ,所以,例如http://localhost:8080/profile将redirect到http://localhost:8080/