Eu tentaria uma abordagem um pouco diferente:
upstream app_server {
server unix:/var/run/unicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name xxxxxxxx.com;
location / {
try_files $uri $uri/ @app;
}
location /api/ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwaded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server/api;
}
location @app {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://198.xxx.xxx.xx:8080;
}
}
Então, aqui especificamos o bloco "pega-tudo" para ser @app, que encaminha solicitações que não correspondem a nenhum arquivo do sistema de arquivos para o 198.xxx.xxx.xx:8080
.
Em seguida, temos um bloco location /api/
separado, que corresponde a todas as solicitações que começam com URI /api
. Esses são então intermediados por proxy para o app_server
.