Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ weight: 100
f5-content-type: how-to
f5-product: NGINX Instance Manager
f5-summary: >
Install the WAF compiler on the F5 NGINX Instance Manager host to enable precompilation of security configurations before deployment.
The WAF compiler must be installed before you can create or deploy security policies and log profiles to F5 WAF for NGINX instances.
Install the WAF compiler on the F5 NGINX Instance Manager host so you can precompile security configurations before deployment.
Install the WAF compiler before you create or deploy security policies and log profiles for F5 WAF for NGINX instances.
---

The WAF compiler lets F5 NGINX Instance Manager precompile security configurations before deploying them to F5 WAF for NGINX instances.
Use the WAF compiler to precompile security configurations in F5 NGINX Instance Manager before you deploy them to F5 WAF for NGINX instances.
Precompiling configurations improves performance and reduces the risk of runtime errors.

Install the WAF compiler on the NGINX Instance Manager host only if you plan to compile configurations on the management plane.
Expand All @@ -32,7 +32,7 @@ For an overview of how the compiler works, see [Security bundle compilation]({{<

## WAF compiler version support

Use the table below to find the correct WAF compiler version for each release of F5 WAF for NGINX:
Use the following table to find the correct WAF compiler version for each release of F5 WAF for NGINX:

{{< include "/waf/waf-nim-compiler-support.md" >}}

Expand All @@ -45,15 +45,15 @@ Earlier releases used 4.x.x for VM packages (for example, NAP 4.15.0, NAP 4.16.0

{{< tabs name="install-waf-compiler" >}}

{{% tab name="Debian or Ubuntu" %}}
{{% tab name="Debian/Ubuntu" %}}

1. Install the WAF compiler:

```shell
sudo apt-get install nms-nap-compiler-v5.715.0
```

1. To install multiple compiler versions on the same system, append the `--force-overwrite` option after the first installation:
1. Append the `--force-overwrite` option after the first installation to install multiple compiler versions on the same system:

```shell
sudo apt-get install nms-nap-compiler-v5.715.0 -o Dpkg::Options::="--force-overwrite"
Expand All @@ -63,7 +63,7 @@ Earlier releases used 4.x.x for VM packages (for example, NAP 4.15.0, NAP 4.16.0

{{% /tab %}}

{{% tab name="RHEL 8.1" %}}
{{% tab name="RHEL/Oracle/Rocky 8" %}}

1. Download the `dependencies.repo` file to `/etc/yum.repos.d`:

Expand All @@ -73,45 +73,35 @@ Earlier releases used 4.x.x for VM packages (for example, NAP 4.15.0, NAP 4.16.0

1. Enable the CodeReady Builder repository:

```shell
sudo subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms
```

1. Install the WAF compiler:
On RHEL 8, run:

```shell
sudo yum install nms-nap-compiler-v5.715.0
sudo dnf config-manager --set-enabled codeready-builder-for-rhel-8-rhui-rpms
```

1. {{< include "nim/waf/restart-nms-integrations.md" >}}

{{% /tab %}}

{{% tab name="RHEL 9" %}}

1. Download the `dependencies.repo` file to `/etc/yum.repos.d`:
On Oracle Linux 8, run:

```shell
sudo wget -P /etc/yum.repos.d https://cs.nginx.com/static/files/dependencies.repo
sudo dnf config-manager --set-enabled ol8_codeready_builder
```

1. Enable the CodeReady Builder repository:
On Rocky Linux 8, run:

```shell
sudo subscription-manager repos --enable codeready-builder-for-rhel-9-x86_64-rpms
sudo dnf config-manager --set-enabled powertools
```

1. Install the WAF compiler:

```shell
sudo yum install nms-nap-compiler-v5.715.0
sudo dnf install nms-nap-compiler-v5.715.0
```

1. {{< include "nim/waf/restart-nms-integrations.md" >}}

{{% /tab %}}

{{% tab name="RHEL 10" %}}
{{% tab name="RHEL/Rocky 9" %}}

1. Download the `dependencies.repo` file to `/etc/yum.repos.d`:

Expand All @@ -121,82 +111,98 @@ Earlier releases used 4.x.x for VM packages (for example, NAP 4.15.0, NAP 4.16.0

1. Enable the CodeReady Builder repository:

On RHEL 9, run:

```shell
sudo subscription-manager repos --enable codeready-builder-for-rhel-10-x86_64-rpms
sudo dnf config-manager --set-enabled codeready-builder-for-rhel-9-rhui-rpms
```

1. Install the WAF compiler:
On Rocky Linux 9, run:

```shell
sudo yum install nms-nap-compiler-v5.715.0
sudo dnf config-manager --set-enabled crb
```

1. {{< include "nim/waf/restart-nms-integrations.md" >}}


{{<call-out class="warning" title="Known issue for nms-nap-compiler-v5.715.0" >}}If the log contains the `Can't locate JSON/XS.pm` error message during policy compilation, install the `perl-JSON-XS` package manually.
1. Install the WAF compiler:

```shell
sudo yum install perl-JSON-XS
sudo dnf install nms-nap-compiler-v5.715.0
```
{{</call-out>}}

1. {{< include "nim/waf/restart-nms-integrations.md" >}}

{{% /tab %}}

{{% tab name="Oracle Linux 8.1" %}}
{{% tab name="RHEL/Rocky 10" %}}

1. Download the `dependencies.repo` file to `/etc/yum.repos.d`:

```shell
sudo wget -P /etc/yum.repos.d https://cs.nginx.com/static/files/dependencies.repo
```

1. Enable the `ol8_codeready_builder` repository:
1. Enable the CodeReady Builder repository:

On RHEL 10, run:

```shell
sudo dnf config-manager --set-enabled codeready-builder-for-rhel-10-rhui-rpms
```

On Rocky Linux 10, run:

```shell
sudo yum-config-manager --enable ol8_codeready_builder
sudo dnf config-manager --set-enabled crb
```

1. Install the WAF compiler:

```shell
sudo yum install nms-nap-compiler-v5.715.0
sudo dnf install nms-nap-compiler-v5.715.0
```

1. {{< include "nim/waf/restart-nms-integrations.md" >}}


{{< call-out class="important" title="Known issue for nms-nap-compiler-v5.690.0" >}}
If the log contains the `Can't locate JSON/XS.pm` error message during policy compilation, install the `perl-JSON-XS` package manually.

```shell
sudo yum install perl-JSON-XS
```
{{< /call-out >}}

{{% /tab %}}

{{< /tabs >}}

{{< call-out class="warning" title="Known issue for auto-downloaded nms-nap-compiler-v5.715.0" >}}If you see the following error message in the UI:
{{< call-out class="important" title="Known issue for auto-downloaded nms-nap-compiler-v5.690.0" >}}
If you see the following error message in the UI:
```text
<instance_name>: failed building config payload: policy compilation failed for deployment <deployment_id> due to integrations service error: compiler controller error: exit status 1
```

<b>AND</b></br>
And the log contains one of the following error messages:

If the log contains any of the following error messages:</br>
For Debian or Ubuntu-based systems:

for Debian or Ubuntu-based systems:
```text
/usr/bin/perl: symbol lookup error: /opt/nms-nap-compiler/app_protect-5.715.0/bin/../lib/perl/auto/F5/PatternMatching/PatternMatching.so: undefined symbol: _ZN3re23RE2C1ESt17basic_string_viewIcSt11char_traitsIcEERKNS0_7OptionsE
/usr/bin/perl: symbol lookup error: /opt/nms-nap-compiler/app_protect-5.690.0/bin/../lib/perl/auto/F5/PatternMatching/PatternMatching.so: undefined symbol: _ZN3re23RE2C1ESt17basic_string_viewIcSt11char_traitsIcEERKNS0_7OptionsE
```

<b>OR</b></br>
For RHEL-based systems:

for RHEL-based systems:
```text
Can't load '/opt/nms-nap-compiler/app_protect-5.715.0/bin/../lib/perl/auto/F5/PatternMatching/PatternMatching.so' for module F5::PatternMatching: libre2.so.11: cannot open shared object file: No such file or directory at /usr/lib64/perl5/DynaLoader.pm
Can't load '/opt/nms-nap-compiler/app_protect-5.690.0/bin/../lib/perl/auto/F5/PatternMatching/PatternMatching.so' for module F5::PatternMatching: libre2.so.11: cannot open shared object file: No such file or directory at /usr/lib64/perl5/DynaLoader.pm
```

<b>Workaround</b>: Run the following command:
**Workaround**: Run the following command:
```shell
sudo bash -c '
cd /opt/nms-nap-compiler/app_protect-5.715.0/lib && \
cd /opt/nms-nap-compiler/app_protect-5.690.0/lib && \
ln -sfn libre2.so.11.0.0 libre2.so.11 && \
ln -sfn libprotobuf.so.3.21.12.0 libprotobuf.so.32 && \
ln -sfn libprotobuf.so.32 libprotobuf.so
'
```
{{</call-out>}}
{{< /call-out >}}
Loading