---
title: "Force local communication in your app"
canonical_url: "https://www.nutrient.io/guides/workflow-automation/faq/how-do-i-force-local-communication-within-the-application/"
md_url: "https://www.nutrient.io/guides/workflow-automation/faq/how-do-i-force-local-communication-within-the-application.md"
last_updated: "2026-05-30T02:20:01.449Z"
description: "Boost performance by forcing local communication between your .NET engine and Node.js server. Follow our easy guide for optimal configuration."
---

# Enhance local communication in your application

A little background. There are two main components to the application: the.NET workflow engine, and the node.js server. They communicate with each other all the time. If you are running Nutrient Workflow behind a load balancer, have a corporate proxy, or just want to tweak for best performance, you may want to force the communication between these two pieces local.

**Case 1: the easy way (works for both SSL enabled and non-SSL enabled sites in all situations)**

This is a very easy task. All that you need to do to force local communication between the server and service is add a windows host file entry on each application server node for the url of your Nutrient Workflow site. You will need to perform these actions from your Nutrient Workflow application server's desktop.

1. Open C:\Windows\System32\drivers\etc\hosts as an Administrator in your favorite text editor

2. Add an entry to the bottom of the file similar to below using the url you use to access your Nutrient Workflow site:

```

127.0.0.1       nutrient workflow.example.com

```

3. The change takes effect immediately after saving the file.

4. Do this on each node if you are load balancing

**Case 2: the elaborate way (SSL site with cert offloading)**

This method is more involved and has a few environmental requirements in order to be used. You must be willing able to implement all of the following to use this method:

1. The SSL certificate will be hosted and terminated at the load balancer or proxy.

2. The traffic between the proxy/balancer and the application nodes will be unencrypted

3. The traffic between the Nutrient Workflow node.js and.NET services will be unencrypted an localized.

The main benefit over "The Easy way" is that by configuring your environment this way, you eliminate encryption overhead where it is not likely needed. This will have some performance benefits. We are going to assume you know your proxy server or load balancer and how to configure it so we will instruct at a high level for some of this document. Note that there will be some downtime involved when making these changes, so you may want to do this during off-hours. You will need to perform some actions from your Nutrient Workflow application server's desktop, so make sure you have access. To implement this method, make the following changes to your environment:

1. Move the hosting of your site's SSL certificate to your load balancer/proxy server.

2. Configure the proxy/loadbalnacer to accept traffic on port 443 (https) and forward it to the application nodes using http on port 8080 (or other port of your choice - more on that later). You can also safely configure a port 80 pass-through over http as the client will be redirected to https (443) automatically.

3. The default state of Nutrient Workflow configured using https at install creates an http redirect in the root of the site. This forces https in the off chance a client requests http, as is the case of a user just typing in the Nutrient Workflow site url in their browser's address bar without specifying the protocol. We need to move this redirect to its own site in IIS. So let's create the directory structure for that.

4. Open Windows File Manager and browse to your nutrient workflow installation directory (c:\nutrient workflow is default) and add a directory names 'redirect'

5. In that directory, create a new file named 'web.config' and enter the following into it using your favorite text editor

   ```xml

   <?xml version="1.0" encoding="UTF-8"?>
   <configuration>
   <system.webServer>
   <httpErrors existingResponse="PassThrough"/>
   <rewrite>
   <rules>
   <rule name="REDIRECT" stopProcessing="true" enabled="true">
   <match url="(.*)"/>
   <conditions>
   <add input="{HTTPS}" pattern="^OFF$"/>
   </conditions>
   <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/>
   </rule>
   </rules>
   </rewrite>
   </system.webServer>
   </configuration>
   ```

6. Open the Internet Information Services (IIS) Manager application

7. Add a new binding to your Nutrient Workflow site in IIS defined with a wildcard on port 8080. _If you are already utilizing that port, pick another one, but this doc will assume 8080 was used._

8. Remove the port 80 bindings from your Nutrient Workflow site.

9. Add a new site and assign the root as the directory you created above in 1.1 (C:\nutrient workflow\redirect would be the default)

10. Depending on your needs and whether you have other sites on your Nutrient Workflow application server, you might need to change the bindings of the site to specify your Nutrient Workflow url on port 80. Otherwise, the wildcard binding on port 80 binding is fine.

11. You may want to restart/reset IIS at this point for the binding to take effect if you received any messages about bindings already existing.

12. Next, we need to make changes to your Nutrient Workflow configuration, so run the OnPremise Manager from the start menu: [Running the Nutrient Workflow OnPremise Manager](https://help7.integrify.com/hc/en-us/articles/115009292287-Running-the-Integrify-OnPremise-Manager)

13. Once in the OPM, select your application from the first drop-down , then 'Advanced Configuration' from the second drop-down and click 'Run'.

14. Edit the "webserver-web-config" file by clicking the edit icon (pencil) next to it. Find the line

`xml     <rule name="REDIRECT" stopProcessing="true" enabled="true">`

(@line 12) in the file, change it to the following, and click "Save":

`xml     <rule name="REDIRECT" stopProcessing="true" enabled="false">`

13. Next, we will force local communication to be unencrypted:
    1. Let's force node.js components to communicate with the.NET engine unencrypted. Edit the "server-config" file by clicking the edit icon (pencil) next to it. Under the "service_root" line (@line 4) in the file, add the following line and click "Save":

    ```

    "local_service_root": "http://127.0.0.1:8080/service",
    ```

14. Let's force the.NET service to communicate with the node.js components unencrypted. Edit the "app-settings" file by clicking the edit icon (pencil) next to it. Anywhere within the <appSettings> tags, add the following line and click "Save":

    ```xml

    <add key="local_node_root" value="http://127.0.0.1:8080"/>
    ```

15. We need to force.NET to run under httpTransport even though the app will believe it is running under https. Edit the server-config file by clicking the edit icon (pencil) next to it. Look for the line starting with "httpsTransport", on that line change the following and click "Save":

    ```

    "httpsTransport" to "httpTransport"
    ```

16. Finally, we need to tell the scheduler to communicate locally. Find the line that starts with "nutrient workflowUrl:", change the url to "http://127.0.0.1:8080" and click "save".
---

> Part of [Frequently asked questions](/guides/workflow-automation/faq.md)

## Related pages

- [Add tables to email notifications easily](/guides/workflow-automation/faq/adding-tables-to-email-notifications.md)
- [Connect Nutrient Workflow to an external SQL Server database](/guides/workflow-automation/faq/adding-sql-server-db-to-nutrient-workflow.md)
- [Streamline task management with the Form Assigner](/guides/workflow-automation/faq/assign-future-tasks-with-the-form-assigner.md)
- [Customize your login screen with these easy tips](/guides/workflow-automation/faq/can-i-change-the-login-screen.md)
- [Changing milestone task names in project management](/guides/workflow-automation/faq/can-i-change-the-name-of-a-milestone-task-on-a-process-in-production.md)
- [Authenticate HTML forms with SAML securely](/guides/workflow-automation/faq/can-we-authenticate-with-saml-when-hosting-html-forms-outside-the-nutrient-workflow-portal.md)
- [Migrating requests in workflow automation processes](/guides/workflow-automation/faq/can-i-migrate-a-group-of-requests-from-one-version-of-a-process-to-an-updated-version.md)
- [Mastering the coalesce technique for workflows](/guides/workflow-automation/faq/coalescing-data-ai-an-advanced-nutrient-workflow-technique.md)
- [Streamline onboarding with ad-hoc related requests](/guides/workflow-automation/faq/creating-ad-hoc-related-requests.md)
- [Preventing request ID creation until task completion](/guides/workflow-automation/faq/can-we-prevent-a-new-request-id-from-being-created-until-a-task-completed.md)
- [Master table maintenance with Nutrient Workflow processes](/guides/workflow-automation/faq/creating-a-table-maintenance-process.md)
- [Customize your Nutrient Workflow logo with ease](/guides/workflow-automation/faq/custom-logo.md)
- [Document generation vs. PDF generator in workflow automation](/guides/workflow-automation/faq/document-generation-vs-pdf-generator.md)
- [Maximize task management with Nutrient Workflow's solutions](/guides/workflow-automation/faq/does-nutrient-workflow-support-leap-year-dates.md)
- [Do disabled users receive notifications in Nutrient Workflow?](/guides/workflow-automation/faq/do-notifications-get-sent-out-to-users-that-have-been-disabled.md)
- [Enhance Nutrient Workflow security with two-factor authentication](/guides/workflow-automation/faq/does-nutrient-workflow-support-two-factor-authentication.md)
- [Embed Outlook and Google calendars in your dashboard](/guides/workflow-automation/faq/embedding-calendars-in-dashboards.md)
- [Understanding task resets and user reassignments](/guides/workflow-automation/faq/does-the-user_recent_activity-store-data-when-a-user-resets-or-re-assign-a-task.md)
- [Streamline file uploads to SharePoint with Nutrient Workflow](/guides/workflow-automation/faq/can-nutrient-workflow-pass-files-into-sharepoint.md)
- [Paste spreadsheet rows into a grid](/guides/workflow-automation/faq/how-can-i-paste-spreadsheet-rows-into-line-items.md)
- [Efficiently extract grid data for custom tables](/guides/workflow-automation/faq/how-can-i-extract-grid-data-to-add-it-to-custom-tables.md)
- [Enable AUTH for secure Nutrient Workflow and Redis setup](/guides/workflow-automation/faq/how-do-i-enable-auth-for-nutrient-workflow-to-redis-communication.md)
- [Force users to change passwords on next login](/guides/workflow-automation/faq/how-do-i-force-a-user-to-change-their-password-on-the-next-login.md)
- [Access your private database server easily](/guides/workflow-automation/faq/how-do-i-access-my-private-database-server.md)
- [How to limit file attachment size in Nutrient Workflow](/guides/workflow-automation/faq/how-do-i-limit-the-allowed-max-file-attachment-size.md)
- [Import active directory users with ADSync easily](/guides/workflow-automation/faq/how-do-i-import-active-directory-users-into-nutrient-workflow-using-adsync.md)
- [Make your process lines straight with grid option](/guides/workflow-automation/faq/how-do-i-make-the-lines-in-a-process-straight.md)
- [Easily prefill contact search fields in forms](/guides/workflow-automation/faq/how-do-i-prefill-in-a-contact-search.md)
- [Understanding user concurrency in Nutrient Workflow](/guides/workflow-automation/faq/how-is-user-concurrency-determined-for-my-installation.md)
- [Schedule a process](/guides/workflow-automation/faq/how-do-i-schedule-a-process.md)
- [Submit a help ticket at the Nutrient Workflow support site](/guides/workflow-automation/faq/how-do-i-submit-a-support-ticket.md)
- [Editing request details in active workflows](/guides/workflow-automation/faq/how-do-you-edit-request-description-and-other-fields-after-the-workflow-has-started.md)
- [Clear browser cache for smooth workflow](/guides/workflow-automation/faq/how-to-clear-your-browser-cache.md)
- [Master dynamic task and request naming effectively](/guides/workflow-automation/faq/how-to-configure-dynamic-task-and-request-names.md)
- [Automate your report from a set starting date](/guides/workflow-automation/faq/i-would-like-to-set-a-report-to-run-from-a-set-date-say-1-1-15-through-the-current-day-today-how-can-i-set-my-report-to-do.md)
- [Edit request names seamlessly with dynamic names](/guides/workflow-automation/faq/is-there-a-way-to-edit-the-name-of-a-request-after-it-has-been-submitted.md)
- [How to reset your Nutrient Workflow password easily](/guides/workflow-automation/faq/i-forgot-my-password.md)
- [Understanding the Nutrient Workflow and PSPDFKit acquisition](/guides/workflow-automation/faq/pspdfkit-acquisition.md)
- [Optimize your workflow with Microsoft Nutrient Workflow integration](/guides/workflow-automation/faq/nutrient-workflow-integrate-microsoft-products.md)
- [Understanding requesters vs. recipients in workflows](/guides/workflow-automation/faq/the-difference-between-a-requester-and-a-recipient.md)
- [Understanding time_out configuration in workflow automation](/guides/workflow-automation/faq/is-there-any-negative-impact-if-we-change-the-time_out-configuration-on-a-task-in-a-process-in-status-production.md)
- [Understanding account lockout rules in Nutrient Workflow](/guides/workflow-automation/faq/is-there-any-way-to-configure-account-lockout-rules.md)
- [Discover Nutrient Workflow's browser compatibility](/guides/workflow-automation/faq/what-browsers-does-nutrient-workflow-support.md)
- [Best practices for testing workflows in Nutrient Workflow](/guides/workflow-automation/faq/what-are-best-practices-for-testing-in-nutrient-workflow.md)
- [Optimize your workflows with Excel integration](/guides/workflow-automation/faq/using-excel-to-enhance-your-automation.md)
- [Streamline task assignments with Assigner tasks](/guides/workflow-automation/faq/using-assigner-tasks.md)
- [Understanding character limits for form inputs](/guides/workflow-automation/faq/what-character-limits-apply-to-the-form-input-fields.md)
- [Upgrade your select list fields for better forms](/guides/workflow-automation/faq/upgrading-select-list-fields.md)
- [What Does 'Create a Copy of this Request' Do?](/guides/workflow-automation/faq/what-does-aucreate-a-copy-of-this-request-au-do.md)
- [Key steps for successful Nutrient Workflow load balancing](/guides/workflow-automation/faq/what-do-i-need-to-change-when-i-load-balance-nutrient-workflow.md)
- [Enhance your subscription with admin coaching support](/guides/workflow-automation/faq/what-is-admin-coaching.md)
- [Expert advanced technical support for Nutrient Workflow](/guides/workflow-automation/faq/what-is-advanced-technical-support-ats.md)
- [Best practices for archiving request data](/guides/workflow-automation/faq/what-is-the-best-practice-for-archiving-request-data-eg-attachments.md)
- [What is 'Submit on Behalf of:' when starting a new request?](/guides/workflow-automation/faq/what-is-submit-on-behalf-of-when-starting-a-new-request.md)
- [Streamline workflows with the PDF Generator Task](/guides/workflow-automation/faq/what-is-the-pdf-generator-task.md)
- [Future logging features for workflow automation](/guides/workflow-automation/faq/when-a-nutrient-workflow-administrator-performs-a-task-resets-or-redo-completion-is-there-a-logging-table-where-this-information-is-st.md)
- [Essential guide to workflow versioning](/guides/workflow-automation/faq/when-to-version-a-production-workflow.md)
- [Understanding the iapprove master root account](/guides/workflow-automation/faq/what-is-the-iapprove-account.md)
- [Fixing missing fields in form data settings](/guides/workflow-automation/faq/why-are-fields-from-my-form-not-showing-up-in-data-configurations.md)
- [What is the difference between Monitor and Manage Requests?](/guides/workflow-automation/faq/what-is-the-difference-between-monitor-and-manage-requests.md)
- [Understanding Nutrient Workflow log files for troubleshooting](/guides/workflow-automation/faq/where-are-the-logs-for-my-onpremise-installation-what-do-they-contain-and-what-should-i-look-out-for.md)

