-
Notifications
You must be signed in to change notification settings - Fork 128
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* testing + load testing instructions * test heroku * trying app.json * lol. need yml * heroku is out. * vercel out; railway in * railway. works. * render deploy config * fix render * cleanup * final proofing. * update URLs
- Loading branch information
Showing
3 changed files
with
91 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,23 +1,86 @@ | ||
# Nginx Proxy for Mixpanel | ||
An example nginx config that serves as a proxy to Mixpanel's Ingestion API and JavaScript library endpoints. To learn more, visit our [docs on Tracking via Proxy](https://docs.mixpanel.com/docs/tracking/how-tos/tracking-via-proxy). | ||
|
||
|
||
## Installation | ||
|
||
There are a few ways you can use this repo to deploy a server that can be use to proxy Mixpanel API requests: one-click deploy to cloud, build a docker image, or copy and paste the nginx settings to your own nginx config file. | ||
There are a few ways you can use this repo to deploy a server that can be use to proxy Mixpanel API requests: | ||
|
||
1. **one-click deploy** to your cloud provider | ||
2. **build a docker image** and run it on your own servers | ||
3. **copy and paste** the nginx settings to your existing nginx config file | ||
|
||
### Option 1: One-Click Deploy | ||
click on a button below to deploy to your favorite cloud provider: | ||
|
||
[![Google Cloud Btn]][Google Cloud Deploy] | ||
[<img src=https://www.deploytodo.com/do-btn-blue.svg width=198px />][Digital Ocean Deploy] | ||
[![Railway Btn]][Railway Deploy] | ||
[![Render Btn]][Render Deploy] | ||
|
||
|
||
<!-- URLS --> | ||
[Google Cloud Btn]: https://binbashbanana.github.io/deploy-buttons/buttons/remade/googlecloud.svg | ||
[Google Cloud Deploy]: https://deploy.cloud.run | ||
|
||
[Digital Ocean Btn]: https://www.deploytodo.com/do-btn-blue.svg | ||
[Digital Ocean Deploy]: https://cloud.digitalocean.com/apps/new?repo=https://github.com/mixpanel/tracking-proxy | ||
|
||
[Railway Btn]: https://binbashbanana.github.io/deploy-buttons/buttons/remade/railway.svg | ||
[Railway Deploy]: https://railway.app/template/_RaWSW | ||
|
||
[Render Btn]: https://binbashbanana.github.io/deploy-buttons/buttons/remade/render.svg | ||
[Render Deploy]: https://render.com/deploy?repo=https://github.com/mixpanel/tracking-proxy | ||
|
||
|
||
<!-- Maybe later? --> | ||
|
||
<!-- Heroku's app.json conflicts with GCP 0_o --> | ||
[Heroku Btn]: https://binbashbanana.github.io/deploy-buttons/buttons/remade/heroku.svg | ||
[Heroku Deploy]: https://heroku.com/deploy/?template=https://github.com/mixpanel/tracking-proxy | ||
|
||
<!-- Azure is too... complicated --> | ||
[Azure Btn]: https://binbashbanana.github.io/deploy-buttons/buttons/remade/azure.svg | ||
[Azure Deploy]: https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FYOUR_GITHUB_USERNAME%2FYOUR_REPO_NAME%2FYOUR_BRANCH_NAME%2Fpath%2Fto%2Fazuredeploy.json | ||
|
||
|
||
|
||
|
||
### Option 1: One-click Deploy | ||
- [Run on Google Cloud](https://deploy.cloud.run) | ||
- [Deploy to DigitalOcean](https://cloud.digitalocean.com/apps/new?repo=https://github.com/mixpanel/tracking-proxy/tree/master) | ||
|
||
### Option 2: Docker Image | ||
Assuming you have Docker installed on your system, you can do the following: | ||
|
||
1. Clone the repo | ||
2. Build the Docker image: `docker build -t mixpanel-proxy .` | ||
3. Run a container using the image: `docker run --name my-tracking-proxy -d -p 8080:80 mixpanel-proxy` | ||
4. Visit `http://localhost:8080` | ||
1. Clone the repo | ||
`git clone https://github.com/mixpanel/tracking-proxy` | ||
2. Build the Docker image: | ||
`docker build -t mixpanel-proxy .` | ||
3. Run a container using the image: | ||
`docker run --name my-tracking-proxy -d -p 8080:80 mixpanel-proxy` | ||
4. Visit | ||
`http://localhost:8080` | ||
|
||
You should see: | ||
|
||
```json | ||
{ | ||
"error": "Welcome. Get started with our API by visiting https://developer.mixpanel.com/" | ||
} | ||
``` | ||
This is same response you would get from visiting https://api.mixpanel.com/ (which means your proxy is working as expected). | ||
|
||
You can also verify the nginx config on the command line: | ||
|
||
```bash | ||
nginx -t -c /etc/nginx/nginx.conf | ||
``` | ||
|
||
For production, you would deploy this docker image to whatever servers you run your production services on. | ||
For production, you would deploy this docker image to whatever servers you run your production services on. | ||
|
||
### Option 3: Add locations to your existing Nginx config | ||
If you already have servers running nginx, you can copy and paste the locations from the [nginx.conf](https://github.com/mixpanel/tracking-proxy/blob/master/nginx.conf) file in this repo and adjust the locations to match your preference. | ||
|
||
### EU Residency | ||
This proxy server resolves requests to `api.mixpanel.com`, which points to Mixpanel's primary data centers in the United States. If you are using Mixpanel's **[EU Data Residency](https://docs.mixpanel.com/docs/other-bits/privacy-and-security/eu-residency)**, you will need to change the [nginx.config](https://github.com/mixpanel/tracking-proxy/blob/master/nginx.conf#L34) from `api.mixpanel.com` to `api-eu.mixpanel.com` | ||
|
||
### Load Testing | ||
|
||
If you wish to load test your proxy, see **[mp-proxy-load-test](https://github.com/ak--47/mp-proxy-load-test/)** for a load testing script with artillery. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,10 @@ | ||
{ | ||
"name": "proxy", | ||
"options": { | ||
"allow-unauthenticated": true, | ||
"port": 80 | ||
} | ||
} | ||
"name": "mixpanel-tracking-proxy", | ||
"options": { | ||
"allow-unauthenticated": true, | ||
"memory": "512Mi", | ||
"cpu": "1", | ||
"port": 80, | ||
"concurrency": 80 | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
services: | ||
- type: web | ||
name: nginx-proxy | ||
env: docker | ||
plan: starter | ||
dockerfilePath: './Dockerfile' | ||
envVars: | ||
- key: PORT | ||
value: '80' |