APISIX Setup
Finmars APISIX Setup Guide
Abstract
As result of that instruction you will have proxy to Exante Broker e.g. https://exante-proxy.client.com where client.com your domain
Prerequisites
Before starting make sure you have the following:
- A machine running Linux with Ubuntu 22.04.
- Docker installed on your machine.
- A public IP address.
Steps to Set Up APISIX
-
Run the APISIX Docker Container:
docker run -d --name apache-apisix -p 9080:9080 -p 9443:9443 -e APISIX_STAND_ALONE=true apache/apisix
-
Create the
apisix.yaml
Configuration File:Create a file named
apisix.yaml
with your desired configuration. -
Copy the
apisix.yaml
File to the APISIX Container:docker cp apisix.yaml apache-apisix:/var/tmp/
-
Move the
apisix.yaml
File to the APISIX Configuration Directory:docker exec -i apache-apisix sh -c 'cp /var/tmp/apisix.yaml /usr/local/apisix/conf/'
-
Reload the APISIX Configuration:
docker exec -it apache-apisix apisix reload
Setting Up HTTPS
If you want your APISIX instance to listen for HTTPS connections, follow these additional steps:
-
Obtain an SSL Certificate:
Get or create an SSL certificate and export it along with its private key to PEM format.
-
Update
ssls.yaml
:Put the PEM contents into the corresponding sections of
ssls.yaml
. -
Include SSL Configuration in
apisix.yaml
:Add the contents of
ssls.yaml
toapisix.yaml
before the#END
instruction.
apisix:
node_listen: 9080 # HTTP inbound port
ssl:
enable: true
listen:
- port: 9443 # HTTPS inbound port
enable_http3: false
consumers:
- username: finmars # client name
plugins:
basic-auth:
username: foo # inbound credentials
password: bar
# upstream.yaml
upstreams:
- id: 1
nodes:
api-demo.exante.eu:443: 1
scheme: https
pass_host: node
type: roundrobin
- id: 2
nodes:
api-live.exante.eu:443: 1
scheme: https
pass_host: node
type: roundrobin
# plugin_config.yaml
plugin_configs:
- id: 1
plugins:
basic-auth: {}
proxy-rewrite:
headers:
set: # credentials used to connect to api-demo.exante.eu
Authorization: "Basic NDQ3YTIxNzEtYWNkMi00N2Q0LWEyOWYtOTk4ZTA5YzQ2Njk0OkJSMUpEQk9NUGdXVmxpN2wyeDBW"
regex_uri:
- "^/demo/(.*)"
- "/$1"
- id: 2
plugins:
basic-auth: {}
proxy-rewrite:
headers:
set: # credentials used to connect to api-live.exante.eu
Authorization: "Basic NDQ3YTIxNzEtYWNkMi00N2Q0LWEyOWYtOTk4ZTA5YzQ2Njk0OkJSMUpEQk9NUGdXVmxpN2wyeDBW"
regex_uri:
- "^/live/(.*)"
- "/$1"
# routes.yaml
routes:
- uris:
- /demo/md/*/accounts
- /demo/md/*/symbols/*
- /demo/md/*/summary/*
- /demo/md/*/ohlc/*
- /demo/md/*/transactions
- /demo/trade/*/ordersorders/*
upstream_id: 1
plugin_config_id: 1
- uris:
- /live/md/*/accounts
- /live/md/*/symbols/*
- /live/md/*/summary/*
- /live/md/*/ohlc/*
- /live/md/*/transactions
- /live/trade/*/ordersorders/*
upstream_id: 2
plugin_config_id: 2
#END
Also part if you dont have nginx proxy
# ssls.yaml
ssls:
- id: 1
snis:
- test.com # hostname where apisix instance is running
cert: |
-----BEGIN CERTIFICATE-----
MIICojCCAYoCCQDoby1LjeWcZzANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZS
T09UQ0EwIBcNMjQwNzEyMjE1MjEzWhgPMjEyNDA2MTgyMTUyMTNaMBMxETAPBgNV
BAMMCHRlc3QuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzs5Y
uQvVwF3CFbNlJPk8OO7QlKA8UuapWdSKgT59Vqnkk0/7dfUHfP6pOFG8kxQexZBG
uxbID+nCM175pJyjXjd2mZngtj2E1l3vUHOH6hhE0o5xLAgrDbBxgHnMZHyh/4xz
quXgho0nv1R0i+OcIou4viyDp4BslYBJUONskEihOyUTJaSUS6zR6Q1aABEVEgYi
OF9Wyr2tJ58jTlrRvFgrsDXeOoyf81diAmWePg4mETanejbaDBhtCQH8PllFfU1b
TeqqZXRAdEOkbV23o4BfPYPB73Px1bdo0u/wGZTTY2DKQwd9QPg8fg0dT8dvegke
3dUUx/XozqekMt3w2QIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAnBUBhEnk2zjP5
P9AJ/2cwfrQSBJ/Bti5vW/xAAEAWxOWqpccdsenr9/T8D4n1g5SZJeXhmRWdvSdB
pYbUrOa4ISjpvotxze4dCOhQo2EO9XupQZPKbioyZTWJczwgxmccdKLH8uJD2llZ
e/JKVfFH7AxO9Cz9I3+oyfEehPjemb5dJg/HQa+nWCC7ic7tC4mvd72GyGqAUb4e
omhzWfmSsDxQpmJauA6uW0swfH+Ws+id6YhwArsxgMYcwURQ6L1YeaXKs3kTRnrN
9XVOTt1NQ0aHPlBo4kGDujJ+aCfH9bReFbwa1CV6nS6wDqXuOSWEkKa69hXI3Wzp
gv0mZ+28
-----END CERTIFICATE-----
key: |
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAzs5YuQvVwF3CFbNlJPk8OO7QlKA8UuapWdSKgT59Vqnkk0/7
dfUHfP6pOFG8kxQexZBGuxbID+nCM175pJyjXjd2mZngtj2E1l3vUHOH6hhE0o5x
LAgrDbBxgHnMZHyh/4xzquXgho0nv1R0i+OcIou4viyDp4BslYBJUONskEihOyUT
JaSUS6zR6Q1aABEVEgYiOF9Wyr2tJ58jTlrRvFgrsDXeOoyf81diAmWePg4mETan
ejbaDBhtCQH8PllFfU1bTeqqZXRAdEOkbV23o4BfPYPB73Px1bdo0u/wGZTTY2DK
Qwd9QPg8fg0dT8dvegke3dUUx/XozqekMt3w2QIDAQABAoIBAHZaPQhZr5CRl7tX
mXDZeg+TDKeiNCO1ggG40zM4Ef8A56EuytgszIZKL4ndrS/2+c1SzkfPt9rzioJf
vjrosc3/q84n9CQXfOg5hfXiyEu+a9ScVERAwHLrIWnHSqPPd96KAMAzIpWePrsO
mExejEJw999OFmJL6th8PHkgTkcbYRKv8K7WnNDIHDUK6iSg0rtyvg2YDgRDDiRv
GS3ofHdO5WxQSrqxYdle8aThuKV31gjt3nlfDNinWKHGEmvXbSGu7HGCk61NlK+j
py3lkTZLeoxVaoZ5fIjdA/aOWDgv9HQBxtiCJd4VGC6xAsLT9gBy9c6cJFdb52Nc
w/jjn6ECgYEA/gx6UrCcp2TuZYU/xkEIMi6mVe7d60w7672pK6FxcNrBiV0T/+F1
o2CwdOiq0X9IJkBLDIGM2fFTPtpIER60f8P/RnfzlX7GenOX+voR9zpYePuyIKaf
UW6n4ZB4wlt7ZIoRwTAwo/Whhx+XGL4iVosw2DIf6tFXRWI0+8dCew0CgYEA0GT6
Xp0yi/D9UjZ1vM/fpojbZh6gZaK6zQjWi5CrcMzC2FyDOK9BTS2BWe28gmgV2Sab
9/fZJmXnpAn1eiI2Co8b4p+44QAPtPUpCslAiVROS1vaEv/S+0ag682jDFWnOR5C
VYSg4hyCOf3KAOJb9mgL/B/vFEnq1YBEr3P6af0CgYEAqeFOKt1O4+DqSZjA/KGg
CW6IbA4+94kSyKEa7sIWSZD+ugwzw3fQYl/Vn1e2YkDqzilQBhzbQyHMuMreRhRy
Pr2hhk3P5LfRoTCLAJkYSmoJn10v0AWbo6iLOpqRJeZmrORm2viOjhVC3kiRkUoT
TCvnjap3DV7PLOZu565nFkECgYEAtVC2Wi3RtdqWvboulHoU8HOw2Nga3HNKrmxb
JxFXaQxvFwrfDSnG2lyWZ+UmGBxxrf8ewxA9OmB9u8cCcyJi/KrpKzOnCvUftWV9
MSpLYXEdsgmX4uH88q3QA3pmu6umlFbUhk2gITuGvugmosBQHUMH8nTicjeh/+Lb
YAC7xw0CgYA8rePgM3xCn5U7zZPbvraYa7UZKvmrBAJpnh+oaYVpF4B1SCVJl23V
Ym/xVKzR3KOQ8eKiUOUTV23CeZ1CSIDeDS5Y3yjVmfBaBxlGmF/Z4kuvfTpk2Lns
AjX3slshjCQjfNtVfelqXW+9QDyZbDZpNs5Cfl8/awj0+Mwv/isxVA==
-----END RSA PRIVATE KEY-----
Get help
- APISIX Documentation [https://apisix.apache.org/docs/apisix/getting-started/README/]
- Exante Documentation [https://api-live.exante.eu/api-docs/]
- Finmars IT Help: s.zhitenev@finmars.com