Eu quero configurar um Nginx com esse propósito.
Sirva o Angular 2 arquivos estáticos dist da URL raiz: link - > exibir o index.html
em /home/www/index.html
No meu projeto Angular2, faço algumas chamadas localmente para /api/some-endpoints
em GET, POST.
Eu quero que as chamadas para /api/{ANY-PATH}
sejam redirecionadas como estão para um URL privado remoto. Preciso que a chamada seja feita com meus cabeçalhos personalizados (por exemplo, cabeçalho de dados de formulário ou apikey) E adicione outro apikey à solicitação para o servidor distante .
Ao fazer uma chamada POST (da máquina na qual o nginx está instalado) para /api/document
, com valores de dados de formulário (contendo um arquivo carregado) e meu cabeçalho personalizado: apikey , 253018b8425f4eb08291a1b68c4bc328
O servidor distante parece não receber nem os dados do formulário nem o apikey.
upstream api-server {
server myprivate-api-server.com:8000;
}
map $http_apikey $api_route {
default "error";
253018b8425f4eb08291a1b68c4bc328 'api-server';
}
server {
listen 80;
index index.html;
server_name example.com;
location = /501_apikey.html {
root /home/www/error_pages;
internal;
}
location ~ /api/(?<path>.*) {
if ($request_method = OPTIONS ) {
add_header 'Access-Control-Allow-Origin' "$http_origin";
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'apikey';
return 200;
}
if ($api_route = "error"){return 501;}
set $clientapikey "hW4g5V60UT2O3iQP1PS2g29hKjQ403E5";
error_page 501 /501_apikey.html;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT';
add_header 'Access-Control-Allow-Headers' 'apikey';
add_header 'clientapikey' $clientapikey;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://$api_route/$path$is_args$args;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $remote_addr;
proxy_ssl_session_reuse off;
proxy_set_header Host $http_host;
add_header 'Access-Control-Allow-Headers' 'apikey';
proxy_redirect off;
}
}
A minha maneira de adicionar a segunda chave do cliente é válida?
add_header 'clientapikey' $clientapikey;
Eu precisarei no futuro criar um local para cada um dos meus clientes, cada um com clientapikey
diferente para identificá-los na API remota.
Tags nginx