0

enter image description here

Hello. I wonder if anyone could help me define which solution to use. I need to run a cloud server that acts as a proxy for HTTP requests, but on the web server side, I have no fixed IP or possibility to open the application access port (such as 8080), which would be a port forwarding. The idea is for the web server to connect to a cloud server solution and stay in a persistent connection waiting for requests. In turn, the client makes the request to the cloud server solution that provides access to the web server App, completing the http communication cycle between client and server.

Does anyone have any idea what technology or solution I can use to solve this problem?

davidgo
  • 6,222
  • 3
  • 23
  • 41

2 Answers2

0

(The correct solution is for the IIS servers to stump up and pay for static IP addresses. I don't like the solution below, as it won't be "server grade" stable. I have not gone into security implications - run appropriate firewalls and/or port limits as appropriate)

There are 2 parts to the solution - part one is to make the webservers "reachable" by "the Cloud". To do this I would use OpenVPN (this could be substituted for other tunnels or VPNS) - Specifically I would run a VPN server "in the cloud", and have each .Net App server communicate with the OpenVPN server in the cloud. I like OpenVPN because it can be fairly responsive to re-establishing when IP addresses change, and it uses UDP and is easy and ubiquitous.

The second part is getting your data to the world. There are lots of solutions depending on your exact requirements. One such solution would be to run a reverse proxy like Apache or NGINX with proxy_pass rules. You can access the remote servers by their OpenVPN IP RFC 1918 addresses and have mod_proxy do the direction. The simplest way would be to have the Apache and OpenVPN service on the same VPN, but you could have them in the same network on different VMs for scalability if you handle the network routing. (Remember that you need to have both a static external IP and VPN "internal/RFC1918" IPs able to reach each other.

Of-course, you don't have to use Apache or NGINX. You could use Squid and caching of the static content, or even do away with a proxy altogether and use IPTables DNAT rules on the VPN box if you are OK having the servers reached on separate ports.

davidgo
  • 6,222
  • 3
  • 23
  • 41
0

Structure Image

Hello there!

Based on davidgo's answer, could this structure be a good idea?