nginx proxy_pass erros POST 404

2

Eu tenho o nginx proxying em um servidor de aplicativos, com a seguinte configuração:

location /app/ {
        # send to app server without the /app qualifier
        rewrite /app/(.*)$ /$1 break;
        proxy_set_header Host $http_host;
        proxy_pass http://localhost:9001;
        proxy_redirect http://localhost:9001 http://localhost:9000;
    }

Qualquer solicitação para / app vai para: 9001, enquanto o site padrão está hospedado em: 9000.

Solicitações GET funcionam bem. Mas sempre que eu envio uma solicitação POST para / app / any / post / url, isso resulta em um erro 404. Atingir o URL diretamente no navegador por meio de GET / app / any / post / url atinge o servidor de aplicativos conforme o esperado.

Encontrei on-line outras pessoas com problemas semelhantes e adicionei

proxy_set_header Host $http_host;

mas isso não resolveu meu problema.

Não há erros registrados, e os logs de acesso são os seguintes:

# For http://localhost:9000 (no proxying)

127.0.0.1 - - [08/Dec/2012:12:29:28 -0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4"

# For http://localhost:9000/app/get/priorities (GET proxy)

127.0.0.1 - - [08/Dec/2012:12:32:17 -0800] "GET /app/get/priorities HTTP/1.1" 200 77 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4"

# When posting to http://localhost:9000/app/create/priority:

127.0.0.1 - - [08/Dec/2012:12:33:50 -0800] "POST /app/create/priority/ HTTP/1.1" 404 188 "http://localhost:9000/form-test.html" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4"

Qualquer ideia é apreciada.

Obrigado.

Configuração completa abaixo:

server {
    listen   9000; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

    root /home/scott/src/ph-dox/html;
    # root ../html; TODO: how to do relative paths?
    index index.html index.htm;

    # Make site accessible from http://localhost/
    server_name localhost;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ /index.html;
        # Uncomment to enable naxsi on this location
        # include /etc/nginx/naxsi.rules
    }

    location /app/ {
        # rewrite here sends to app server without the /app qualifier
        rewrite /app/(.*)$ /$1 break;
        proxy_set_header Host $http_host;
        proxy_pass http://localhost:9001;
        proxy_redirect http://localhost:9001 http://localhost:9000;
    }

    location /doc/ {
        alias /usr/share/doc/;
        autoindex on;
        allow 127.0.0.1;
        allow ::1;
        deny all;
    }

}
    
por Scott 07.12.2012 / 03:06

1 resposta

0

Meu problema, o problema não era nginx, era o meu servidor de aplicativos. Eu estava usando um módulo de roteamento que exigia que eu especificasse explicitamente o método de solicitação, se não um get, e é por isso que estava lançando um erro 404 no post, mas não ao acessar diretamente o URL do navegador.

    
por 08.12.2012 / 22:14