我想为此设置一个Nginx。
从根url服务Angular 2 dist静态文件: http : //example.com – >在/home/www/index.html显示index.html
在我的Angular2项目中,我使用GET,POST在/api/some-endpoints进行一些本地调用。
我希望将/api/{ANY-PATH}调用redirect到一个远程私有URL。 我需要使用我的自定义标题 (例如form-data或apikey标题)进行调用,并将另一个apikey添加到远程服务器的请求中 。
使用表单数据值(包含上传的文件)和我的自定义标题: apikey , 253018b8425f4eb08291a1b68c4bc328进行POST调用(从安装了nginx的机器)到/api/document apikey , 253018b8425f4eb08291a1b68c4bc328
远程服务器似乎并没有收到,也没有forms数据,也没有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; } }
我的方式添加客户端第二个密钥有效吗?
add_header 'clientapikey' $clientapikey;
我将来需要为每个客户端创build一个位置,每个客户端都有不同的客户端clientapikey ,以便在远程API上识别它们。