ProxyPass no nginx

1

Estou tentando fazer o proxy_pass no nginx com a seguinte configuração:

location /abc_service { proxy_pass http://127.0.0.1:3030; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }

Mas estou recebendo / abc_service como prefixo em meu aplicativo (aplicativo rails em execução na porta 3030). Por ex: Estou recebendo '/ abc_service / users / sign_in', que deve ser '/ users / sign_in'

Eu quero remover este prefixo.

Estava funcionando bem no apache com:

ProxyPass /abc_service http://localhost:3030 timeout=300 KeepAlive=On ProxyPassReverse /abc_service/ http://localhost:3030/

    
por Satyam Singh 06.02.2015 / 12:15

1 resposta

2

A operação de proxy_pass é explicada na documentação do nginx: link

A request URI is passed to the server as follows:

If the proxy_pass directive is specified with a URI, then when a request is passed to the server, the part of a normalized request URI matching the location is replaced by a URI specified in the directive:

location /name/ {
    proxy_pass http://127.0.0.1/remote/;
}

If proxy_pass is specified without a URI, the request URI is passed to the server in the > same form as sent by a client when the original request is processed, or the full normalized request URI is passed when processing the changed URI:

location /some/path/ {
    proxy_pass http://127.0.0.1;
}

Então, você precisa usar isto:

location /abc_service
{
    proxy_pass       http://127.0.0.1:3030/;
    proxy_set_header Host      $host;
    proxy_set_header X-Real-IP $remote_addr;
}
    
por 06.02.2015 / 13:23