在Nginx中的同一个域上运行两个应用程序

6ss1mwsb  于 2023-10-17  发布在  Nginx
关注(0)|答案(1)|浏览(150)

我有一个AWS VPS,其中React应用程序在反向代理Nginx+Domain和SSL上运行,在同一个VPS中,我有一个NodeJS API,它是在另一个端口上运行的应用程序的后端。我想知道如何将应用程序与服务器上的API集成在同一个域中。应用程序在端口3000上运行,API在端口3001上运行。我需要在Nginx中为同一个域名打开两个端口吗?或者在应用程序的域中创建一个子域,并将URL www.example.com的请求重定向meuapp.com/api到端口3001上的其他Node服务?
也就是说,在同一个VPS/代理/域结构中,在一个端口上运行应用程序,在另一个端口上运行API,并且仍然使其他应用程序可以访问API的最佳方法是什么?

wbgh16ku

wbgh16ku1#

更新答案
如果你想使用子路径方法,你应该可以通过Nginx配置来实现,如下所示:

server {
  listen       80;
  listen  [::]:80;
  server_name  meuapp.com;
  
  location / {
    proxy_set_header    X-Real-IP  $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header    Host $http_host;
    proxy_redirect      off;
    proxy_pass          http://127.0.0.1:3000/;
  }

  location /api {
    proxy_set_header    X-Real-IP  $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header    Host $http_host;
    proxy_redirect      off;
    rewrite             /api/(.*) /$1  break;
    proxy_pass          http://127.0.0.1:3001/;
  }
}
  • 原创答案
    我可能会选择子域方法。也就是说,您可以为API设置一个域api.meuapp.com,为前端设置一个域www.meuapp.com
    这个想法会是这样的:

如果您使用子域方法,请记住您需要相应地设置CORS。

相关问题