我如何告诉 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;
}
}