nginx - 如何基于Nginx中的请求URL重定向到特定的上游服务器?

标签 nginx

我将Nginx用作5个应用服务器的负载平衡器。

我想根据请求URL重定向到特定服务器,例如:

acme.com/category/*          => Server #1
acme.com/admin/*             => Server #2
api.acme.com                 => Server #3
Fallback for any other URL   => Server #4, #5


我的配置看起来像:

upstream backend  {
  least_conn;
  server 10.128.1.1;
  server 10.128.1.2;
  server 10.128.1.3;
  server 10.128.1.4;
  server 10.128.1.5;
}

server {
  listen 80;
  server_name _;

  location / {
    proxy_set_header Host $host;
    proxy_pass  http://backend;
  }
}


我不知道如何执行此操作,因为我对Nginx不太熟悉-任何人都有一些线索?

最佳答案

阅读the documentation,其中的所有内容都得到了很好的解释。特别是beginner's guide解释了基础知识。您最终将得到:

upstream backend  {
  least_conn;
  server 10.128.1.4;
  server 10.128.1.5;
}

server {

  server_name _;

  location / {
    proxy_set_header Host $host;
    proxy_pass  http://backend;
  }

}

server {

  server_name acme.com;

  location /admin/ {
    proxy_set_header Host $host;
    proxy_pass  http://10.128.1.2;
  }

  location /category/ {
    proxy_set_header Host $host;
    proxy_pass  http://10.128.1.1;
  }

  location / {
    proxy_set_header Host $host;
    proxy_pass  http://backend;
  }

}

server {

  server_name api.acme.com;

  location / {
    proxy_set_header Host $host;
    proxy_pass  http://10.128.1.3;
  }

}

关于nginx - 如何基于Nginx中的请求URL重定向到特定的上游服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27220678/

相关文章:

Nginx Controller 客户端身份验证 optional_no_ca 不起作用

php - dockerized web 应用程序中 laravel 5/php-fpm/nginx 的超慢查询时间

php - Docker Compose 与 PHP、MySQL、nginx 连接问题

NGINX:当 proxy_pass 失败时提供静态文件

django - 即使在运行迁移之后 Django Programming 错误列也不存在

html - 加扰 HTML/CSS 问题似乎无法解释

ajax - 使用 Nginx 作为代理,ajax 请求每隔一个请求得到 405

ruby-on-rails - Nginx可以用作后端Websocket服务器的反向代理吗?

django - 当大请求正文和过期 session 时,Nginx+uWSGI+Django 返回 502

django - 添加另一个 Django 站点会破坏现有的 SSL Django 站点