2015-01-20 5 views
0

Я пытаюсь создать простой сервер nginx, чтобы действовать как прокси-сервер между моим интерфейсом ui и моим задним концом api. Настройка довольно проста. Пользовательский интерфейс выполняет все запросы api в/api/endpoint, а прокси-сервер передает запрос на api. Прокси также должен переписать запрос так, чтобы вместо перехода на http://api.location.net/api/endpoint он отправился в http://api.location.net/endpoint. Пользовательский интерфейс находится на http://api.location.net. Эта часть не работает (я получаю 500 ошибок), и я уверен, что это связано с тем, как я пишу свое правило перезаписи. Вот моя конфигурация nginx.nginx rewrite не работает

daemon off; 
error_log off; 

worker_processes 2; 
worker_rlimit_nofile 100000; 
events { 
    worker_connections 50000; 
    accept_mutex off; 
} 

http { 
    include /etc/nginx/mime.types; 
    access_log off; 
    sendfile on; 

    server { 
     listen 80 default_server; 
     server_name localhost _; 

     location/{ 
      alias /srv/site/; 
     } 

     location /api/ { 
      rewrite ^/api ""; # I think this is the problem 
      proxy_pass http://api.location.net; 
      proxy_pass_request_headers on; 
      proxy_pass_header X-ResponseData; 
      proxy_redirect off; 
     } 
    } 
} 

Любая помощь будет принята с благодарностью, Nginx все еще довольно новое для меня, и документация на Nginx переписывания, кажется, не есть то, что мне нужно.

ответ

2

Если я понял, вы правы, это должно помочь

location /api/ { 
      proxy_pass http://api.location.net/; 
      proxy_pass_request_headers on; 
      proxy_pass_header X-ResponseData; 
      proxy_redirect off; 
     } 

Обратите внимание на URI части в директиве proxy_pass

Если директива proxy_pass задается с URI, а затем, когда принят запрос на сервер часть нормализованного запроса URI , соответствующая местоположению, заменяется URI, указанным в директиве:

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

+0

Спасибо! Это, в сочетании с некоторыми другими более специфичными для проекта настройками, зафиксировало это. – taylorc93