# How do I expose the web dev module to the internet safely?

**URL:** <https://forum.inductiveautomation.com/t/how-do-i-expose-the-web-dev-module-to-the-internet-safely/80961>\
**Category:** General Discussion\
**Created:** [October 25, 2023, 2:34pm UTC](https://forum.inductiveautomation.com/t/how-do-i-expose-the-web-dev-module-to-the-internet-safely/80961 "2023-10-25T14:34:33Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![bmeyers](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bmeyers/32/37453_2.png) [@bmeyers](https://forum.inductiveautomation.com/u/bmeyers)\
**Post date:** [October 25, 2023, 2:34pm UTC](https://forum.inductiveautomation.com/t/how-do-i-expose-the-web-dev-module-to-the-internet-safely/80961/1 "2023-10-25T14:34:33Z")

</div>

For some backgorund information I have a 3rd party service called LINE that can send webhooks to other services (Ignition for example).

> [@How to use the web dev module to send a POST to LINE API?](https://forum.inductiveautomation.com/t/how-to-use-the-web-dev-module-to-send-a-post-to-line-api/80705/1):
>
> I have an Ignition client that wants to send messages to LINE, a freeware app for instant communications on electronic devices. LINE offers an API that I should be able to interface with from the Ignition web dev module. This is a screenshot from the developers page. curl -v -X POST https://api.line.me/v2/bot/message/push \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer {channel access token}' \ -H 'X-Line-Retry-Key: {UUID}' \ -d '{ "to": "U4af4980629...", "me…

Previously, I have had hardware on our internal network sending POSTs to the internal Ignition web server (using the web dev module).

Now I want to take this process a step further and create a URL I can give to the 3rd party service LINE which will then send webhooks to the Ignition web dev server.

**My root problem is how do I create that URL that LINE can talk to? How do I ensure this process is safe from bad actors?**

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [October 25, 2023, 3:19pm UTC](https://forum.inductiveautomation.com/t/how-do-i-expose-the-web-dev-module-to-the-internet-safely/80961/2 "2023-10-25T15:19:44Z")

</div>

Generally, you would put a reverse proxy on the internet (apache, nginx, whatever) configured to pass through just the desired webdev URLs to your Ignition server. Such a reverse proxy could also shorten them.

---

<div class="post-metadata">

**Author:** ![chaoliang](https://avatars.discourse-cdn.com/v4/letter/c/ba8739/32.png) [@chaoliang](https://forum.inductiveautomation.com/u/chaoliang)\
**Post date:** [October 30, 2023, 12:43am UTC](https://forum.inductiveautomation.com/t/how-do-i-expose-the-web-dev-module-to-the-internet-safely/80961/3 "2023-10-30T00:43:13Z")

</div>

So, with the NGINX setup, we can, for example, set up the ignition backend project in multiple clouds, as redundant servers? If one server is down, the other severs can take over the communication, or with multiple server running, the comms can be distributed among different servers?

I know node.js backend works well with NGINX about the multi server setup, but with ignition gateway already setup with redundancy configuration internally, will it still work?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [October 30, 2023, 11:43am UTC](https://forum.inductiveautomation.com/t/how-do-i-expose-the-web-dev-module-to-the-internet-safely/80961/4 "2023-10-30T11:43:19Z")

</div>

I would expect you to need two separate, publicly reachable names to use redundancy in public. A single nginx server could host multiple distinct host names, but that would be a single point of failure. I'm not at all aware of how to or even if nginx does load balancing. I think of HAproxy for that.

---

<div class="post-metadata">

**Author:** ![chaoliang](https://avatars.discourse-cdn.com/v4/letter/c/ba8739/32.png) [@chaoliang](https://forum.inductiveautomation.com/u/chaoliang)\
**Post date:** [October 30, 2023, 11:40pm UTC](https://forum.inductiveautomation.com/t/how-do-i-expose-the-web-dev-module-to-the-internet-safely/80961/5 "2023-10-30T23:40:24Z")

</div>

good point. the load balancer brings in a single point of failure.

Found the following link, mirror up the load balancer.  
[How to avoid a single point of failure](https://www.loadbalancer.org/blog/easiest-way-to-reduce-downtime-avoiding-a-single-point-of-failure/#:~:text=If%20your%20load%20balancer%20now,servers%20to%20the%20load%20balancer).

---

<div class="post-metadata">

**Author:** ![chaoliang](https://avatars.discourse-cdn.com/v4/letter/c/ba8739/32.png) [@chaoliang](https://forum.inductiveautomation.com/u/chaoliang)\
**Post date:** [October 30, 2023, 11:41pm UTC](https://forum.inductiveautomation.com/t/how-do-i-expose-the-web-dev-module-to-the-internet-safely/80961/6 "2023-10-30T23:41:55Z")

</div>

this is from Nginx

> **[High Availability - NGINX](https://www.nginx.com/products/nginx/high-availability/)**
>
> NGINX Plus can be configured into a high-availability cluster with an active-passive pair of NGINX Plus instances to ensure application availability.
