Use a third-party forward proxy
This guide explains how to configure NGINX Instance Manager to use a third-party forward proxy for outbound internet access. Many organizations require a proxy for security and compliance, restricting direct internet connections. This feature allows NGINX Instance Manager to send outbound traffic, such as license verification, telemetry, and updates, through a configured HTTP or HTTPS proxy.
Ensure you have:
- NGINX Instance Manager 2.19 or later
- Access to a configured HTTP or HTTPS forward proxy
- Permissions to modify /etc/nms/nms.conf
- Proxy authentication credentials, if required
proxy_ssl_verifyapplies only whenproxy_protocolis set tohttps.- If not explicitly set,
proxy_ssl_verifydefaults totrue. The proxy’s root CA certificate must be in the system’s trusted CA store for verification to succeed.- To disable SSL verification, set
proxy_ssl_verify: false(not recommended).
On OpenShift, pods run as non-root users, which prevents the use of
update-ca-certificatesorupdate-ca-trustto add custom CA certificates for HTTPS forward proxies. As a result, HTTPS proxy configurations (with or without authentication) may not work if the proxy requires a trusted CA certificate.Workarounds:
- Recommended: Use an HTTP proxy instead of HTTPS.
- Alternative (not recommended): Disable certificate verification by setting
proxy_ssl_verify: false, which allows connections to proxies with untrusted or self-signed certificates.
- Mutual TLS (mTLS) authentication is not supported.
- OpenID Connect (OIDC) authentication is not supported in forward-proxy mode.
- OpenTelemetry (OTel) telemetry is not supported in forward-proxy mode.
The following table describes the available proxy configuration parameters in /etc/nms/nms.conf:
| Parameter | Description | 
|---|---|
| proxy_enable | Defines whether NGINX Instance Manager routes outbound traffic through a forward proxy. Supported values: true(routes certain outbound requests through the proxy) orfalse(sends data directly to servers). | 
| proxy_host | IP address of the third-party forward proxy. | 
| proxy_port | Port on which the third-party proxy is running. | 
| proxy_protocol | Protocol used to interact with the proxy. Supported values: http,https. | 
| proxy_auth_required | Determines whether authentication is enforced for proxy access. Supported values: true(proxy requires authentication) orfalse(proxy does not require authentication). | 
| proxy_username | Username for authentication with the proxy (if proxy_auth_required: true). | 
| proxy_password | Password for authentication with the proxy (if proxy_auth_required: true). | 
| proxy_ssl_verify | Controls SSL certificate verification when proxy_protocolishttps.Default value: true.Supported values: true(only trusted proxies allowed) orfalse(allows untrusted/self-signed certificates). | 
In a VM or bare-metal deployment, configure a forward proxy by updating the nms.conf file on the NGINX Instance Manager host.
To configure a forward proxy:
- 
Edit the /etc/nms/nms.conffile.
- 
Add or modify the proxy_configsection to include the proxy configuration:yaml proxy_config: proxy_enable: true proxy_host: <proxy-ip> proxy_port: <proxy-port> proxy_protocol: [http|https] proxy_auth_required: [true|false] proxy_ssl_verify: [true|false]- 
If the proxy requires authentication, set proxy_auth_requiredtotrue, and add the following fields:yaml proxy_username: "<username>" proxy_password: "<password>"
- 
Set proxy_protocolto eitherhttporhttps, depending on your proxy type.
- 
If not explicitly set, proxy_ssl_verifydefaults totrue, meaning the proxy must have a valid certificate from a trusted Certificate Authority (CA). Note: This setting applies only whenproxy_protocolishttps.If the proxy uses a self-signed or untrusted certificate, you have two options: - Recommended: Follow the steps in the Trust proxy certificates section to add the proxy’s CA certificate to the system’s trusted store.
- Alternative (not recommended): Disable SSL verification by setting proxy_ssl_verify=false, which allows connections to proxies with untrusted or self-signed certificates.
 
 
- 
- 
Save the configuration file. 
- 
Restart NGINX Instance Manager to apply changes: sudo systemctl restart nms
In a Kubernetes deployment, configure a forward proxy by modifying the nms-conf ConfigMap.
To edit the ConfigMap, run:
kubectl edit cm nms-conf -n <namespace>- Replace <namespace>with the namespace where NGINX Instance Manager is installed.
- Update the proxy_configsection to match your proxy settings. See the examples under "Configure the forward proxy".
If you’re deploying NGINX Instance Manager with Docker Compose, update the docker-compose.yaml file to configure a forward proxy.
- 
Before you begin: Follow the Docker Compose deployment guide to set up Docker for the NGINX container registry. The deployment guide also covers additional environment variables you may want to consider before deployment. 
- 
Update docker-compose.yamlwith the proxy settings:Modify the services.nim.environmentsection to include the proxy configuration:yaml services: nim: image: private-registry.nginx.com/nms/nim-standalone-compose:<version> depends_on: clickhouse: condition: service_healthy hostname: nim ports: - 443:443 networks: - external_network - clickhouse environment: - PROXY_ENABLE=true - PROXY_HOST=<proxy-ip> - PROXY_PORT=<proxy-port> - PROXY_PROTOCOL=[http|https] - PROXY_AUTH_REQUIRED=[true|false] - PROXY_SSL_VERIFY=[true|false] volumes: - nim-data:/data - proxy-certs:/usr/local/share/ca-certificates - ./<proxy-ca-cert-file>:/usr/local/share/ca-certificates/<proxy-ca-cert-file>- 
If the proxy requires authentication, set PROXY_AUTH_REQUIREDtotrue, and add the following fields:yaml - PROXY_AUTH_USERNAME=<username> - PROXY_PASSWORD=<password>
- 
Replace <proxy-ca-cert-file>with the filename of the proxy CA certificate.
- 
Set PROXY_PROTOCOLto eitherhttporhttps, depending on your proxy type.
- 
If not explicitly set, PROXY_SSL_VERIFYdefaults totrue, meaning the proxy must have a valid certificate issued by a trusted Certificate Authority (CA). Note: This setting applies only whenPROXY_PROTOCOLishttps.If the proxy uses a self-signed or untrusted certificate, you have two options: - Recommended: Follow the steps in the Trust proxy certificates section to add the proxy’s CA certificate to the system’s trusted store.
- Alternative (not recommended): Disable SSL verification by setting PROXY_SSL_VERIFY=false, which allows connections to proxies with untrusted or self-signed certificates.
 
 
- 
- 
Deploy NGINX Instance Manager: docker compose up -d
If your proxy uses HTTPS and proxy_ssl_verify is set to true, NGINX Instance Manager expects the proxy’s CA certificate to be trusted. If the proxy certificate is self-signed or issued by an untrusted Certificate Authority (CA), you must manually add it to the system’s trusted store.
For Kubernetes deployments, perform these steps inside the integrations pod.
- 
Copy the proxy CA certificate into the system’s trusted certificate directory. The path varies by distribution: - Debian/Ubuntu: /usr/local/share/ca-certificates/
- RHEL/CentOS: /etc/ssl/certs/
 
- Debian/Ubuntu: 
- 
Run the appropriate command to update the system’s trusted certificates: - 
Debian/Ubuntu: sudo update-ca-certificates
- 
RHEL/CentOS: sudo update-ca-trust
 
- 
- 
Apply the changes: - 
VM/bare-metal: Restart NGINX Instance Manager: sudo systemctl restart nms
- 
Kubernetes: Restart the integrations pod. 
 
- 
After applying the configuration, verify that NGINX Instance Manager is using the proxy:
- 
Check system logs: Review logs for messages confirming that traffic is being routed through the proxy. The exact log message may vary but should indicate the configured proxy details. 
- 
Test outbound connectivity: Use a tool such as curlorwgetto confirm that requests are routed through the proxy. The exact command depends on your proxy configuration.
- 
Monitor network traffic: If needed, use network debugging tools like tcpdumpornetstatto verify that outbound requests are sent through the proxy.
If proxy traffic is not working as expected, review the troubleshooting section for possible causes.
| Issue | Log Message | Possible Cause | Resolution | 
|---|---|---|---|
| Authentication failed | N/A | Incorrect proxy credentials. | Double-check proxy_usernameandproxy_password. | 
| Invalid proxy configuration | Error: failed to initialize LLM:invalid forward proxy config: <reason> | The proxy configuration section is missing or improperly formatted. | - Ensure the proxy configuration is correct in /etc/nms/nms.conf.- Verify all required parameters ( proxy_enable,proxy_host,proxy_port,proxy_protocol) are set. | 
| Proxy initialization failure | unable to add proxy support,err - <err> | The proxy settings are misconfigured, or the proxy service is unavailable. | - Ensure that the proxy service is running and accessible. - Verify that proxy_enableis set totrueand all required parameters are correctly configured. | 
| Proxy not reachable | N/A | Incorrect proxy IP or port. | Verify proxy_hostandproxy_portin/etc/nms/nms.conf. | 
| TLS certificate verification error | proxyconnect tcp: tls:failed to verify certificate:x509: certificate signed by unknown authority | SSL verification is enabled (default), but the proxy certificate is untrusted. | - Add the proxy’s CA certificate to the system’s trusted CA store. - If necessary, disable SSL verification by setting proxy SSL verify to false (not recommended). |