NGINX可以同时作为Web服务器和代理服务器吗?

时间:2017-02-22 11:36:12

标签: nginx web reverse-proxy

我们需要从server_A(NGINX)提供登录页面,从此处获取用户身份验证,并且一旦经过身份验证,就会将请求路由到位于不同服务器(即Server_B)中的页面。所有后续请求都将到达Server_A,它将首先检查用户和会话的有效性,然后路由到Server_B。这样,会话和安全性由服务器A维护,其余工作由服务器B完成。

我的问题是,我们可以从NGINX服务器实现这一点吗?

1 个答案:

答案 0 :(得分:2)

  

我的问题是,我们可以从NGINX服务器实现这一点吗?

是的,当然。

你是怎么做到的?

以NGINX应用程序配置后面的修改后的Tomcat为例,我很方便:

server {
    listen 80;
    server_name www.example.com;
    location /{
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        proxy_pass http://servera.example.com:8080/app;
        client_max_body_size 10M;
    }
    location /login{
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        proxy_pass http://serverb.example.com:8080/login;
        client_max_body_size 10M;
    }
}

这将代理对TomCat服务器的请求,并像任何HTTP服务器一样提供服务。

对于您可能想要代理的任何应用程序,也可以这样说,只需相应地修改上述配置的proxy_pass行!