Opened 2 years ago

Closed 2 years ago

#13189 closed project (fixed)

Set up an Azure backend

Reported by: dcf Owned by: dcf
Priority: Medium Milestone:
Component: Obfuscation/meek Version:
Severity: Keywords:
Cc: Actual Points:
Parent ID: Points:
Reviewer: Sponsor:


I got a 12-month research pass for doc/meek#MicrosoftAzure.

Child Tickets

Attachments (1)

internal-consumption.png (4.9 KB) - added by dcf 2 years ago.
The email you get when your research pass is activated.

Download all attachments as: .zip

Change History (5)

Changed 2 years ago by dcf

The email you get when your research pass is activated.

comment:1 Changed 2 years ago by dcf

The email you get when your research pass is activated.

comment:2 Changed 2 years ago by dcf

I get the impression that you can't use the Azure CDN to forward to just any origin server—only to one of your Azure services (a "storage account" or a "cloud service").

How to Enable the Content Delivery Network (CDN) for Azure
"In the Origin Domain dropdown, select a storage account from the list of your available storage accounts, or select a cloud service from the list of your available cloud services."

In this regard it looks like App Engine. The CDN fronts a cloud service, and the cloud service is a trivial reflector that forwards requests on to the bridge.

The Azure account also lets you set up your own VMs (unlike App Engine), so probably you could also just run a bridge right on Azure, and front it with the CDN and dispense with the reflector.

Azure Websites, Cloud Services and Virtual Machines comparison

Last edited 2 years ago by dcf (previous) (diff)

comment:3 Changed 2 years ago by dcf

I got something running on Azure Websites.

$ wget -q -O - --header 'Host:'
I’m just a happy little web server. is the front domain. is the CDN-assigned domain, which is an alias for, which is where the service is actually running. All I had to do for code is upload the index.php from #10984.

The CDN layer appears to be necessary. This doesn't work:

$ wget -O - --header 'Host:'
ERROR 404: Not Found.

I think for a real deployment we'll want to use a "Cloud Service" and not an "Azure Website." That's a bit more involved, with an SDK etc. We can apparently write the service in Java, Node.js, PHP, Python, .NET, or Ruby. The SDK is free software and apparently you can script stuff from the command line.

P.S. Don't count on the domains in this comment remaining stable.

comment:4 Changed 2 years ago by dcf

  • Resolution set to fixed
  • Status changed from new to closed

I spent quite some time looking at setting up a "Cloud Service." It's hard to do. The Azure SDK is free software, but not a certain program, cspack, that builds the .cspkg file that you need to upload. I tried this Node-based packager, but couldn't get it to work. In the end I gave up on a cloud service.

Instead, I wrote a WSGI reflector and installed it on Azure Websites. It's about the same as the PHP reflector. I added instructions on how to set it up to doc/meek#MicrosoftAzure.

The bridge line to use this deployment is

Bridge meek url=
Note: See TracTickets for help on using tickets.