# How to keep HTTP integrations working while switching EasyMorph Hub to HTTPS

**URL:** <https://community.easymorph.com/t/how-to-keep-http-integrations-working-while-switching-easymorph-hub-to-https/6785>\
**Category:** Articles\
**Created:** [September 1, 2026, 5:39pm UTC](https://community.easymorph.com/t/how-to-keep-http-integrations-working-while-switching-easymorph-hub-to-https/6785 "2026-09-01T17:39:24Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![olysak](https://community.easymorph.com/letter_avatar_proxy/v4/letter/o/aeb1de/32.png) [@olysak](https://community.easymorph.com/u/olysak)\
**Post date:** [September 1, 2026, 5:39pm UTC](https://community.easymorph.com/t/how-to-keep-http-integrations-working-while-switching-easymorph-hub-to-https/6785/1 "2026-09-01T17:39:24Z")

</div>

For now, EasyMorph Hub listens on a single port and speaks either HTTP or HTTPS. So when you need to switch it to HTTPS, every existing link that starts with `http://` pointing to the Hub stops working (such as task reload links, API endpoints, auto-generated documentation, bookmarked Hub pages, etc.).

If you have many links like that in use, it can be challenging to change all of them without stopping things from working for some time.

As a workaround, you can put Nginx (a reverse proxy) in front of the Hub as a temporary compatibility measure: it keeps answering plain HTTP on the old port and forwards those requests to the Hub over HTTPS. Existing integrations keep working unchanged while you migrate them.

This guide sets that up on Windows, on the same machine as the Hub.

## Before you start

- The Hub (v 6+) should be already switched to HTTPS on port 443 (for exapmle via Server Monitor), with a certificate that covers your domain name. If you're concerned about downtime, you can finish `nginx` setup (below) before switching Hub to HTTPS, but the switch itself would require some downtime nevertheless.
- The domain you use has no forced HTTP =\> HTTPS redirect - meaning no HSTS rule from a CDN. Such a rule would rewrite `http://` to `https://` even before the request ever gets to Nginx, which defeats the whole arrangement.
- You have administrator rights on the server.

Replace `your-domain.com` with your own domain, and `6330` with port your integrations currently use.

## 1. Install Nginx

Download the latest stable Windows build from [https://nginx.org/en/download.html](https://nginx.org/en/download.html) and unzip it into  
`C:\nginx\`.

 ![01-nginx-unzipped](https://community.easymorph.com/uploads/default/original/2X/a/a995a75470ae448ba012a23d0ae64f7488004d0c.png)

## 2. Configure Nginx

Replace the contents of `C:\nginx\conf\nginx.conf` with the following:

```nginx
worker_processes auto;

events {
    worker_connections 1024;
}

http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;

    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }

    server {
        listen 6330;
        server_name your-domain.com;

        location ~ ^/(space/[^/]+/tasks/start/|api/|web-api/|odata/|hubs/) {
            proxy_pass https://127.0.0.1;

            proxy_ssl_verify off;
            proxy_ssl_server_name on;
            proxy_ssl_name $host;

            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;

            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;

            proxy_read_timeout 3600s;
            proxy_send_timeout 3600s;
        }

        location / {
            return 301 https://$host$request_uri;
        }
    }
}

```

## 3. Validate the configuration

Open a command prompt in the Nginx folder and run the syntax check:

```auto
cd C:\nginx
.\nginx.exe -t

```

 ![02-nginx-config-test](https://community.easymorph.com/uploads/default/original/2X/e/eed5ad89d5683bb17d6e88316d08c6a409af761a.png)

## 4. Open port 6330 in Windows Firewall

Go to **Control Panel → All Control Panel Items → Administrative Tools → Windows Defender Firewall  
with Advanced Security **, then** Inbound Rules → New Rule → Port → Next**.

 ![03-firewall-new-inbound-rule](https://community.easymorph.com/uploads/default/original/2X/8/838fda4308454b0d6aedafb09dc47a57e5ba27ba.png)

Select **TCP** , and under _Specific local ports_ enter **6330** → Next.

 ![04-firewall-tcp-port-6330](https://community.easymorph.com/uploads/default/original/2X/d/d280853da809420d43e56cfc2c4987591e52baee.png)

Select **Allow the connection** → Next.

 ![05-firewall-allow-connection](https://community.easymorph.com/uploads/default/original/2X/4/4cf267fb28e0a97cb187a656e1aa498bda9c01fc.png)

Select all network profiles (Domain, Private, Public) → Next.

 ![06-firewall-profiles](https://community.easymorph.com/uploads/default/original/2X/4/4ca9eef7e4982873c6e625596edc1b2d110583a2.png)

Give the rule a name (for example, `Nginx`) and click **Finish**.

 ![07-firewall-rule-name](https://community.easymorph.com/uploads/default/original/2X/1/17056d11b0b64bc91b529cde8baeac2040f996bf.png)

## 5. Run Nginx as a Windows service

Nginx has no built-in service mode on Windows, so use NSSM.  
Download it from  
[https://nssm.cc/release/nssm-2.24.zip](https://nssm.cc/release/nssm-2.24.zip) and unzip into `C:\nssm\`.

 ![08-nssm-unzipped](https://community.easymorph.com/uploads/default/original/2X/9/9a1007e08a410683cf9a69a18a4b658c31881a17.png)

Then, from a command prompt:

```auto
cd C:\nssm\win64
nssm install nginx "C:\nginx\nginx.exe"
nssm set nginx AppDirectory "C:\nginx"
nssm start nginx

```

The `nginx` service should now show as **Running** in Windows Services (`services.msc`).

 ![09-nginx-service-running](https://community.easymorph.com/uploads/default/original/2X/f/f0606fc97d1e781e890a14fb74e7c1cb0c84f79c.png)

## 6. Verify

Open both of these in a browser:

- [https://your-domain.com:443](https://your-domain.com:443)
- [http://your-domain.com:6330](http://your-domain.com:6330)

The first opens the Hub. The second should redirect you to the first.

Then from any machine that can reach the server:

```auto
curl -i http://your-domain.com:6330/api/v1/server/status
curl -i -X POST "http://your-domain.com:6330/hubs/notifications/negotiate?negotiateVersion=1"

```

Both should return a real answer from the Hub - a 200.

If either returns a 301, the path is being redirected instead of forwarded and needs to be added to the location pattern.

**Treat this as temporary.**  
The point of the arrangement is to over time transition all API callers, EasyMorph Hub links in Desktops, and EasyMorph Hub connectors to `https://`

Once the last one transitions, stop the `nginx` service, remove the firewall rule, and you are on plain end-to-end HTTPS.
