Como fazer proxy no pedido nginx para o caminho do tomcat?

1

Eu tenho um nome de domínio example.com. Quando insiro example.com , desejo fazer proxy da solicitação para 127.0.0.1:8080/source

Minha configuração nginx

location / {
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   Host      $http_host;
    proxy_pass         http://127.0.0.1:8080;
 }

Isso funciona para 127.0.0.1:8080, mas não consigo obtê-lo como proxy para o subdiretório / source. Quando mudo para

proxy_pass http://127.0.0.1:8080/source/;

Não funciona corretamente.

Ele redireciona para link , mas o caminho do arquivo js e css é /source/js/ *.js e /source/css/ *.css , e outros o arquivo de recursos é /source/* . Por exemplo, quando o brower carregar o html, ele tentará encontrar o /source/js/ *.js , porque eu redireciono para http://127.0.0.1:8080/source/ , o caminho final é http://127.0.0.1:8080/source/source/js/ *.js , mas o caminho certo é http://127.0.0.1:8080/source/js/ *.js

Eu só quero que quando eu entrar no example.com , ele seja redirecionado para o link , ou redirecionar para example.com/source é ok também.

    
por Mattia Dinosaur 01.05.2017 / 05:51

1 resposta

1

O final da sua pergunta sugere que tudo o que você precisa fazer é reescrever um único URI. Isso pode ser feito de várias maneiras, mas uma correspondência exata location com um rewrite...last seria assim:

location = / {
    rewrite ^ /source/ last;
}
location / {
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   Host      $http_host;
    proxy_pass         http://127.0.0.1:8080;
}

Veja este e isso para detalhes.

    
por 01.05.2017 / 12:12