2017-02-22 22 views
0

У нас есть ситуация, когда нам нужно обслуживать страницу входа в систему с сервера_A (NGINX), получить от пользователя аутентификацию и один раз аутентифицировать маршрут на странице запроса, которая находится на другом сервере, то есть Server_B. Все последующие запросы будут поступать на сервер_А, и он сначала проверит срок действия пользователя и сеанса, а затем перейдет на сервер_B. Таким образом, сеанс и безопасность поддерживаются сервером A, а остальная часть работы выполняется сервером B.Может ли NGINX работать как веб-сервер и прокси-сервер одновременно?

Мой вопрос в том, что мы можем добиться этого с сервера NGINX?

ответ

0

Мой вопрос здесь в том, что мы можем добиться этого с сервера NGINX?

Да, конечно.

Как вы это делаете?

Беря пример модифицированного Tomcat за NGINX конфигурации приложения у меня есть под рукой:

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 вышеуказанной конфигурации соответственно!