You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Deploys both NGINX and WAF components within containers.
@@ -55,8 +55,8 @@ NGINX App Protect WAF v5 supports a range of deployment scenarios to meet variou
55
55
- Ideal for scalable, cloud-native environments.
56
56
57
57
3.[NGINX on Host/VM with Containerized WAF]({{< ref "/nap-waf/v5/admin-guide/install.md" >}})
58
-
- NGINX is operated directly on the host system or a virtual machine, with WAF components deployed in containers.
59
-
- Perfect for situations where NGINX is already in use on host systems, allowing for the addition of WAF components without disrupting the existing NGINX setup.
58
+
- NGINX operates on the host system or a virtual machine. WAF components are deployed in containers.
59
+
- Perfect for situations where NGINX is already in use on host systems. Addition of WAF components will not disrupt the existing NGINX setup.
60
60
61
61
## NGINX App Protect WAF Compiler
62
62
@@ -70,41 +70,41 @@ For signature updates, read the [Update App Protect Signatures]({{< ref "/nap-wa
70
70
71
71
## Transitioning from NGINX App Protect WAF v4 to v5
72
72
73
-
Upgrading directly from v4 to v5 is not supported due to architectural changes in NGINX App Protect WAF v5.
73
+
Upgrading from v4 to v5 is not supported due to architectural changes in NGINX App Protect WAF v5.
74
74
75
75
{{< note >}}
76
-
We recommend that you deploy the NGINX App Protect WAF v5 in a staging environment. Only after you compile policies with WAF compiler and test the enforcement should you transfer the traffic from the v4 to v5. This keeps the v4 deployment for backup.
76
+
We recommend that you deploy the NGINX App Protect WAF v5 in a staging environment. Compile policies with WAF compiler and test the enforcement before you transfer the traffic from the v4 to v5. This keeps the v4 deployment for backup.
77
77
{{< /note >}}
78
78
79
-
1. Back up your NGINX App Protect WAF configuration files, such as NGINX configurations, JSON policies, logging profiles, user-defined signatures, and global settings.
79
+
1. Back up your NGINX App Protect WAF configuration files. These include NGINX configurations, JSON policies, logging profiles, user-defined signatures, and global settings.
80
80
81
-
1. Install NGINX App Protect WAF 5 (using either nginx OSS or nginx-plus based on the need of customer's application).
81
+
2. Install NGINX App Protect WAF 5. Use either nginx OSS or nginx-plus based on the need of customer's application.
-[Deploying NGINX App Protect WAF on Docker]({{<ref "/nap-waf/v5/admin-guide/deploy-on-docker.md">}})
84
84
-[Deploying NGINX App Protect WAF on Kubernetes]({{<ref "/nap-waf/v5/admin-guide/deploy-with-helm.md">}})
85
85
86
-
1. Compile your `.json` policies and logging profiles to `.tgz` bundles using [compiler-image]({{<ref "/nap-waf/v5/admin-guide/compiler.md">}}) because NGINX App Protect WAF v5 supports policies and logging profiles in a compiled bundle format only.
86
+
3. Compile your `.json` policies and logging profiles to `.tgz` bundles using [compiler-image]({{<ref "/nap-waf/v5/admin-guide/compiler.md">}}). NGINX App Protect WAF v5 supports policies and logging profiles in a compiled bundle format only.
87
87
88
88
{{< note >}}
89
-
If you were previously using a default [logging profile]({{<ref "/nap-waf/v5/admin-guide/deploy-on-docker.md#using-policy-and-logging-profile-bundles">}}) JSON like `/opt/app_protect/share/defaults/log_all.json`, you can replace it with the default constant such as `log_all`, and then you will not need to explicitly compile the logging profile into a bundle.
89
+
If you were previously using a default [logging profile]({{<ref "/nap-waf/v5/admin-guide/deploy-on-docker.md#using-policy-and-logging-profile-bundles">}}) JSON like `/opt/app_protect/share/defaults/log_all.json`, you can replace it with the default constant such as `log_all`, and then you will not need to compile the logging profile into a bundle.
1. Replace the `.json` references in nginx.conf with the above created `.tgz`[bundles]({{<ref "/nap-waf/v5/admin-guide/install.md#using-policy-and-logging-profile-bundles">}}).
97
+
4. Replace the `.json` references in nginx.conf with the above created `.tgz`[bundles]({{<ref "/nap-waf/v5/admin-guide/install.md#using-policy-and-logging-profile-bundles">}}).
98
98
99
-
1. Make sure that `.tgz` bundles references are accessible to the `waf-config-mgr` container.
99
+
5. Make sure that `.tgz` bundles references are accessible to the `waf-config-mgr` container.
100
100
101
-
1. Restart the deployment if it has already been initiated. Additionally, restart NGINX if utilizing the VM + containers deployment type. After the migrations, check that the NGINX process is running in the NGINX error log and there are no issues.
101
+
6. Restart the deployment if it has already initiated. Additionally, restart NGINX if utilizing the VM + containers deployment type. After the migrations, check that the NGINX process is running in the NGINX error log and there are no issues.
102
102
103
103
104
104
---
105
105
106
106
## Troubleshooting and FAQs
107
107
108
-
See common deployment challenges and solutions to ensure a smooth setup process in the [Troubleshooting Guide]({{< ref "/nap-waf/v5/troubleshooting-guide/troubleshooting.md#nginx-app-protect-5" >}}).
108
+
Review the [Troubleshooting Guide]({{< ref "/nap-waf/v5/troubleshooting-guide/troubleshooting.md#nginx-app-protect-5" >}}) for common deployment challenges and solutions to ensure a smooth setup process.
109
109
110
110
Docker images for NGINX App Protect WAF v5 are built using Ubuntu 22.04 (Jammy) binaries.
Copy file name to clipboardExpand all lines: content/ngf/overview/resource-validation.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -62,8 +62,8 @@ More information on CEL in Kubernetes can be found [here](https://kubernetes.io/
62
62
This step catches the following cases of invalid values:
63
63
64
64
- Valid values from the Gateway API perspective but not supported by NGINX Gateway Fabric yet. For example, a feature in an HTTPRoute routing rule. For the list of supported features see [Gateway API Compatibility]({{< relref "./gateway-api-compatibility.md" >}}) doc.
65
-
- Valid values from the Gateway API perspective, but invalid for NGINX, because NGINX has stricter validation requirements for certain fields. These values will cause NGINX to fail to reload or operate erroneously.
66
-
- Invalid values (both from the Gateway API and NGINX perspectives) that were not rejected because Step 1 was bypassed. Similar to the previous case, these values will cause NGINX to fail to reload or operate erroneously.
65
+
- Valid values from the Gateway API perspective, but invalid for NGINX. NGINX has stricter validation requirements for certain fields. These values will cause NGINX to fail to reload or operate erroneously.
66
+
- Invalid values (both from the Gateway API and NGINX perspectives) that were not rejected because Step 1 was bypassed. These values will cause NGINX to fail to reload or operate incorrectly.
67
67
- Malicious values that inject unrestricted NGINX config into the NGINX configuration (similar to an SQL injection attack).
68
68
69
69
Below is an example of how NGINX Gateway Fabric rejects an invalid resource. The validation error is reported via the status:
Copy file name to clipboardExpand all lines: content/nginx/admin-guide/content-cache/content-caching.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,7 +17,7 @@ When caching is enabled, F5 NGINX Plus saves responses in a disk cache and uses
17
17
To learn more about NGINX Plus’s caching capabilities, watch the [Content Caching with NGINX](https://nginx.com/resources/webinars/content-caching-nginx-plus/) webinar on demand and get an in‑depth review of features such as dynamic [content caching](https://nginx.com/products/nginx/caching/), cache purging, and delayed caching.
18
18
19
19
<spanid="enable"></span>
20
-
## Enabling the Caching of Responses
20
+
## Enable the Caching of Responses
21
21
22
22
To enable caching, include the [`proxy_cache_path`](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path) directive in the top‑level `http {}` context. The mandatory first parameter is the local filesystem path for cached content, and the mandatory `keys_zone` parameter defines the name and size of the shared memory zone that is used to store metadata about cached items:
23
23
@@ -65,7 +65,7 @@ proxy_cache_path /data/nginx/cache keys_zone=mycache:10m loader_threshold=300 lo
65
65
```
66
66
67
67
<spanid="select"></span>
68
-
## Specifying Which Requests to Cache
68
+
## Specify Which Requests to Cache
69
69
70
70
By default, NGINX Plus caches all responses to requests made with the HTTP `GET` and `HEAD` methods the first time such responses are received from a proxied server. As the key (identifier) for a request, NGINX Plus uses the request string. If a request has the same key as a cached response, NGINX Plus sends the cached response to the client. You can include various directives in the `http {}`, `server {}`, or `location {}` context to control which responses are cached.
71
71
@@ -88,7 +88,7 @@ proxy_cache_methods GET HEAD POST;
88
88
```
89
89
90
90
<spanid="bypass"></span>
91
-
## Limiting or Disabling Caching
91
+
## Limit or Disable Caching
92
92
93
93
By default, responses remain in the cache indefinitely. They are removed only when the cache exceeds the maximum configured size, and then in order by length of time since they were last requested. You can set how long cached responses are considered valid, or even whether they are used at all, by including directives in the `http {}`, `server {}`, or `location {}` context:
NGINX makes it possible to remove outdated cached files from the cache. This is necessary for removing outdated cached content to prevent serving old and new versions of web pages at the same time. The cache is purged upon receiving a special “purge” request that contains either a custom HTTP header, or the HTTP `PURGE` method.
124
124
125
125
<spanid="purge_configure"></span>
126
-
### Configuring Cache Purge
126
+
### Configure Cache Purge
127
127
128
128
Let’s set up a configuration that identifies requests that use the HTTP `PURGE` method and deletes matching URLs.
129
129
@@ -156,7 +156,7 @@ Let’s set up a configuration that identifies requests that use the HTTP `PURGE
156
156
```
157
157
158
158
<span id="purge_request"></span>
159
-
### Sending the Purge Command
159
+
### Send the Purge Command
160
160
161
161
When the `proxy_cache_purge` directive is configured, you need to send a special cache‑purge request to purge the cache. You can issue purge requests using a range of tools, including the `curl` command as in this example:
162
162
@@ -171,7 +171,7 @@ Connection: keep-alive
171
171
In the example, the resources that have a common URL part (specified by the asterisk wildcard) are purged. However, such cache entries are not removed completely from the cache: they remain on disk until they are deleted for either inactivity (as determined by the `inactive` parameter to the [`proxy_cache_path`](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path) directive) or by the cache purger (enabled with the [`purger`](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#purger) parameter to `proxy_cache_path`), or a client attempts to access them.
172
172
173
173
<spanid="purge_secure"></span>
174
-
### Restricting Access to the Purge Command
174
+
### Restrict Access to the Purge Command
175
175
176
176
We recommend that you limit the number of IP addresses that are allowed to send a cache‑purge request:
In this example, NGINX checks if the `PURGE` method is used in a request, and, if so, analyzes the client IP address. If the IP address is whitelisted, then the `$purge_method` is set to `$purge_allowed`: `1` permits purging, and `0` denies it.
192
192
193
193
<spanid="purge_remove"></span>
194
-
### Completely Removing Files from the Cache
194
+
### Completely Remove Files from the Cache
195
195
196
196
To completely remove cache files that match an asterisk, activate a special `cache purger` process that permanently iterates through all cache entries and deletes the entries that match the wildcard key. Include the [`purger`](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#purger) parameter to the [`proxy_cache_path`](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path) directive in the `http {}` context:
Copy file name to clipboardExpand all lines: content/nginx/admin-guide/installing-nginx/installing-nginx-docker.md
+13-13Lines changed: 13 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,7 +24,7 @@ type:
24
24
25
25
26
26
<spanid="nginx_plus_official_images"></span>
27
-
## Using official NGINX Plus Docker images
27
+
## Use official NGINX Plus Docker images
28
28
29
29
Since NGINX Plus NGINX Plus [Release 31]({{< ref "nginx/releases.md#r31" >}}) you can get an NGINX Plus image from the official NGINX Plus Docker registry and upload it to your private registry.
30
30
@@ -66,7 +66,7 @@ The NGINX Plus registry contains images for the two most recent versions of NGIN
66
66
67
67
The image may contain a particular version of NGINX Plus or contain a bundle of NGINX Plus and NGINX Agent, and can be targeted for a specific architecture.
68
68
69
-
### Listing all tags
69
+
### List all tags
70
70
71
71
For a complete tag list for NGINX Plus bundled with NGINX Agent images, use the command:
72
72
@@ -90,7 +90,7 @@ where:
90
90
91
91
92
92
93
-
### Downloading the JSON Web Token or NGINX Plus certificate and key {#myf5-download}
93
+
### Download the JSON Web Token or NGINX Plus certificate and key {#myf5-download}
94
94
95
95
Before you get a container image, you should provide the JSON Web Token file or SSL certificate and private key files provided with your NGINX Plus subscription. These files grant access to the package repository from which the script will download the NGINX Plus package:
96
96
@@ -109,7 +109,7 @@ Before you get a container image, you should provide the JSON Web Token file or
109
109
110
110
{{% /tabs %}}
111
111
112
-
### Set up Docker for NGINX Plus Container Registry
112
+
### Set up Docker for NGINX Plus container registry
113
113
114
114
Set up Docker to communicate with the NGINX Container Registry located at `private-registry.nginx.com`.
{{< note >}} Starting from [NGINX Plus Release 33]({{< ref "nginx/releases.md#r33" >}}), the JWT file is required for each NGINX Plus instance. For more information, see [About Subscription Licenses]({{< ref "/solutions/about-subscription-licenses.md">}}). {{< /note >}}
211
211
@@ -390,7 +390,7 @@ Any change made to the files in the local directories `/var/www and /var/nginx/c
390
390
391
391
392
392
<span id="manage_copy"></span>
393
-
### Copying Content and Configuration Files from the Docker Host
393
+
### Copy content and configuration files from the Docker host
394
394
395
395
Docker can copy the content and configuration files from a local directory on the Docker host during container creation. Once a container is created, the files are maintained by creating a new container when files change or by modifying the files in the container.
396
396
@@ -421,7 +421,7 @@ To make changes to the files in the container, use a helper container as describ
421
421
422
422
423
423
<span id="manage_container"></span>
424
-
### Maintaining Content and Configuration Files in the Container
424
+
### Maintain content and configuration files in the container
425
425
426
426
As SSH cannot be used to access the NGINX container, to edit the content or configuration files directly you need to create a helper container that has shell access. For the helper container to have access to the files, create a new image that has the proper Docker data volumes defined for the image:
427
427
@@ -476,12 +476,12 @@ To exit the shell and terminate the container, run the `exit` command.
476
476
477
477
478
478
<span id="log"></span>
479
-
## Managing Logging
479
+
## Manage logging
480
480
481
481
You can use default logging or customize logging.
482
482
483
483
<span id="log_default"></span>
484
-
### Using Default Logging
484
+
### Use default logging
485
485
486
486
By default, the NGINX image is configured to send NGINX [access log](https://nginx.org/en/docs/http/ngx_http_log_module.html#access_log) and [error log](https://nginx.org/en/docs/ngx_core_module.html#error_log) to the Docker log collector. This is done by linking them to `stdout` and `stderr`: all messages from both logs are then written to the file `/var/lib/docker/containers/container-ID/container-ID-json.log` on the Docker host. The container‑ID is the long‑form ID returned when you [create a container](#docker_oss_image). To display the long form ID, run the command:
487
487
@@ -507,7 +507,7 @@ To include only access log messages in the output, include only `stdout=1`. To l
507
507
508
508
509
509
<span id="log_custom"></span>
510
-
### Using Customized Logging
510
+
### Use customized logging
511
511
512
512
If you want to configure logging differently for certain configuration blocks (such as `server {}` and `location {}`), define a Docker volume for the directory in which to store the log files in the container, create a helper container to access the log files, and use any logging tools. To implement this, create a new image that contains the volume or volumes for the logging files.
513
513
@@ -524,7 +524,7 @@ Then you can [create an image](#docker_plus_image) and use it to create an NGINX
524
524
525
525
526
526
<span id="control"></span>
527
-
## Controlling NGINX
527
+
## Control NGINX
528
528
529
529
Since there is no direct access to the command line of the NGINX container, NGINX commands cannot be sent to a container directly. Instead, [signals](https://nginx.org/en/docs/control.html) can be sent to a container via Docker `kill` command.
0 commit comments