微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NGINX =>使用子uris在单个主机名上提供多个应用程序

我想从同一台服务器提供多个应用程序,通过Nginx进行反向代理.我希望这些应用程序可通过单个域名与子uris一起使用.

例如

www.mydomain.com/nodejs
=&GT由Nginx捕获端口80并通过端口3001上运行的node.js应用程序捕获

www.mydomain.com/rails
=&GT Nginx收听端口80并通过端口3002上运行的rails应用程序捕获

我的第一个尝试是从两个上游开始:

# /etc/Nginx/sites-available/mydomain.com

upstream nodejs {
  server 127.0.0.1:3001;
}

upstream rails {
  server 127.0.0.1:3002;
}

server {
  listen 80 default deferred;

  # What do I put here so that
  # mydomain.com/nodejs is proxied to the nodejs upstream and
  # mydomain.com/rails  is proxied to the rails  upstream ???
}

有谁知道这一点或指出我正确的方向?

解决方法:

怎么样:

upstream nodejs {
    server 127.0.0.1:3001;
}

upstream rails {
    server 127.0.0.1:3002;
}

server {
    listen 80;  

    location /nodejs {
        proxy_pass         http://nodejs;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

    location /rails {
        proxy_pass         http://rails;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

}

或者很快:

server {   
    listen 80;     

    location /nodejs {
        proxy_pass         http://127.0.0.1:3001;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

    location /rails {
        proxy_pass         http://127.0.0.1:3002;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

}

大多数代理指令都是可选的(您可能只需要proxy_pass和proxy_redirect)但很有用.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐