URL do pedido de configuração do servidor proxy nginx para solicitação subsequente

1
server {
    server_name 127.0.0.1;
    listen 3000;

    location = /auth {
        internal;
        proxy_pass http://127.0.0.1:8088/auth;

    }


    location / {
        auth_request /auth;

        # force Nginx to preserver the response proxy_set_header
        auth_request_set $falure_reason $sent_http_x_authenticationfail;

        error_page 401 =200 /login;
        proxy_pass http://127.0.0.1:9000;
    }

    location /login {           
        proxy_pass http://127.0.0.1:8081/sso;
    }
}

Estou trabalhando em um serviço de autenticação. A idéia é quando uma requisição atinge o root, ela será autenticada (token de verificação) através de / auth e o servidor de autenticação se encontra no link para tratar todo pedido de autenticação. Em seguida, se o token não estiver definido, o servidor de autenticação responderá a uma página de erro 401 e a capturará e encaminhará a / login para o proxy ao meu servidor de login link . Mas o problema é, quando eu passar por / - > / auth - > / login, o retorno do url da requisição do servidor ainda é 127.0.0.1:3000/sso ao invés de ttp: //127.0.0.1: 8081 / sso, porque depois eu preciso enviar uma requisição posterior para link com id / senha de login do usuário. Mas o nginx me aponta para o 127.0.0.1:3000/sso no navegador.

    
por Jason Liu 12.04.2018 / 00:09

1 resposta

0

Eventualmente, eu me descobri. Como o nginx atua como um proxy reverso, o cliente só teria acesso ao URL do proxy 127.0.0.1:3000/sso, já que o nginx cuida da solicitação de encaminhamento e apenas expõe seu URL ao cliente em vez do URL do servidor subjacente. Portanto, para enviar a solicitação de postagem de volta do lado do cliente para o link , preciso definir um local do sso no servidor nginx para encaminhar todos os pedidos de 127.0.0.1:3000/sso para link como um mecanismo de proxy consistente.

    
por 12.04.2018 / 23:26