我如何告诉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会更适合?
不。 Apache不会更好,但它可以完全做同样的工作。 完成您的愿望的规范方法是在nginx中创build不同的servers ,并根据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; } }