我如何告诉 Nginx 根据传入的 URL 将请求传递给不同的应用程序?

我如何告诉 Nginx 根据传入的 URL 将请求传递给不同的应用程序?

我如何告诉 Nginx 根据传入的 URL 将请求传递给不同的应用程序?

例如,mybudgetapp.com 和 myshoppingapp.com 都指向我的服务器,其中两个应用程序 (8001、8002) 和 Nginx (80) 都在运行。当用户访问 mybudgetapp.com 时,他们应该会收到运行在 8001 上的应用程序的响应。当用户访问 myshoppingapp.com 时,他们应该收到运行在 8002 上的应用程序的响应。

这是一个接近我想要的例子:

location / {
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $remote_addr;
  proxy_set_header Host $host;
  proxy_pass http://127.0.0.1:8001;
}

我一直在阅读这个文档,但其中的术语让我困惑。 http://nginx.org/en/docs/http/ngx_http_proxy_module.html

Nginx 是否是适合此目的的工具,或者 Apache 是否更适合?

答案1

不。Apache 不会更好,但它可以做同样的工作。实现你的愿望的规范方法是servers在 nginx 中创建不同的,并根据不同的后端进行代理Host HTTP 标头,并根据需要传递该标题:

server {
    listen 80;
    server_name myshoppingapp.com;
    proxy_set_header Host $host;
    location / {
        proxy_pass http://firstapp;
    }
}

server {
    listen 80;
    server_name mybudgetapp.com;
    proxy_set_header Host $host;
    location / {
        proxy_pass http://secondapp;
    }
}

相关内容