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;
}
}