generated from nginx/template-repository
-
Notifications
You must be signed in to change notification settings - Fork 120
docs: Connect NGINX Agent to NGINX One using an explicit forward proxy #1025
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 11 commits
Commits
Show all changes
23 commits
Select commit
Hold shift + click to select a range
8337806
feat: new doc for agent squid
JTorreG 76d5407
chore: add placeholders
JTorreG 1fa6d25
docs: update steps
JTorreG d671487
docs:Merge remote-tracking branch 'origin/main' into agent/nms-46504
JTorreG 4073895
fix: fix step
JTorreG 9e26fbc
fix: code blocks
JTorreG dbbe8b1
docs: add docker steps
JTorreG 4693c97
fix: docker steps
JTorreG 11e16b4
docs: add squid config content
JTorreG 4e3b390
Merge branch 'main' into agent/nms-46504
JTorreG d8e6f1e
docs: remove MacOS steps
JTorreG ad4d73b
docs: change squid restart to reload
JTorreG 70d671e
docs: clean up squid instructions
nginx-seanmoloney 45f0c24
docs: updates
JTorreG f7c4a1e
docs: report > connect
JTorreG 7c1f88f
Merge branch 'main' into agent/nms-46504
JTorreG 9bdfd0f
docs: move stuff around
JTorreG da84010
Update content/nginx-one/connect-instances/connect-using-squid.md
JTorreG cf6601c
Merge branch 'main' into agent/nms-46504
ADubhlaoich 458ca7f
docs: remove squid install step
JTorreG 39eda0b
fix: Apply suggestions from code review
JTorreG 1ddcd0b
Update content/nginx-one/connect-instances/connect-using-squid.md
JTorreG ca6d0ad
chore: remove mentions of specific proxy (#1034)
JTorreG File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
181 changes: 181 additions & 0 deletions
181
content/nginx-one/agent/configure-instance-reporting/connect-using-squid.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,181 @@ | ||
--- | ||
title: Connect to NGINX One using Squid | ||
toc: true | ||
weight: 300 | ||
nd-docs: DOCS-000 | ||
--- | ||
|
||
NGINX Agent can be configured to report to NGINX One using a [Squid proxy](https://www.squid-cache.org/). This is useful in environments where direct internet access is restricted or monitored. | ||
|
||
## Before you start | ||
|
||
Ensure you have the following: | ||
|
||
- [Squid proxy server set up and running](https://wiki.squid-cache.org/SquidFaq/InstallingSquid) | ||
- [NGINX Agent is installed]({{< ref "nginx-one/agent/install-upgrade/" >}}) | ||
- Access to the NGINX One console | ||
|
||
## Install Squid | ||
|
||
Follow the instructions in the [Squid website](https://wiki.squid-cache.org/SquidFaq/BinaryPackages) to install Squid on your server. | ||
|
||
|
||
JTorreG marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
## Configure Squid | ||
|
||
Follow the steps below to configure Squid with basic authentication. | ||
|
||
1. Set up an HTTP Proxy with Basic Authentication. This setup requires users to provide a username and password. Run the | ||
following commands as a superuser: | ||
|
||
```sh | ||
apt-get install apache2-utils -y # Install htpasswd utility | ||
htpasswd -c /usr/local/squid/passwd your_user # Create a user | ||
JTorreG marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
``` | ||
|
||
- You will be prompted to enter and confirm a password for `your_user`. | ||
|
||
1. Locate the Squid configuration file: | ||
- Run `squid -v` to find the configuration file path. Look for the `--sysconfdir` flag (usually `/etc/squid/squid.conf` on Ubuntu). | ||
JTorreG marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
||
1. Find the path to your basic_ncsa_auth program: | ||
- On Ubuntu, it is usually located at `/usr/lib/squid/basic_ncsa_auth`. | ||
|
||
1. Open the Squid configuration file with your favorite text editor (you might need superuser privileges): | ||
|
||
```sh | ||
vim <path to config file>/squid.conf | ||
JTorreG marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
``` | ||
|
||
1. Add or modify the following lines (usually at the top of the file) to configure the proxy settings: | ||
|
||
```conf | ||
auth_param basic program <path_to_basic_ncsa_auth>/basic_ncsa_auth /usr/local/etc/squid/passwd auth_param basic realm Squid proxy-caching web server acl authenticated proxy_auth REQUIRED | ||
``` | ||
|
||
1. In the same configuration file, find the line that starts with `http_access deny all` and add the `http_access allow authenticated` line above it. It should look like this: | ||
|
||
```conf | ||
http_access allow authenticated | ||
http_access deny all | ||
``` | ||
|
||
1. Save the changes and exit the text editor. | ||
1. Restart the Squid service to apply the changes: | ||
|
||
```sh | ||
sudo systemctl restart squid | ||
JTorreG marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
``` | ||
|
||
--- | ||
|
||
## NGINX Agent Proxy configuration | ||
|
||
1. Open a secure connection to your instance using SSH and log in. | ||
JTorreG marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
1. Open the NGINX Agent configuration file (/etc/nginx-agent/nginx-agent.conf) with a text editor. | ||
1. Add or modify the `proxy` section to include the Squid proxy URL and timeout settings: | ||
|
||
```conf | ||
server: | ||
host: mgmt.example.com | ||
port: 443 | ||
type: 1 | ||
proxy: | ||
url: "http://proxy.example.com:3128" | ||
timeout: 10s | ||
``` | ||
|
||
1. Reload NGINX Agent to apply the changes: | ||
|
||
```sh | ||
sudo systemctl restart nginx-agent | ||
``` | ||
|
||
### In a containerized environment | ||
|
||
To configure NGINX Agent in a containerized environment: | ||
|
||
1. Run the NGINX Agent container with the environment variables set as follows: | ||
|
||
```sh | ||
docker run -d \ | ||
--name nginx-agent \ | ||
-e NGINX_AGENT_COMMAND_SERVER_PROXY_URL=http://proxy.example.com:3128 | ||
-e NGINX_AGENT_COMMAND_SERVER_PROXY_TIMEOUT=10 | ||
nginx/nginx-agent:latest | ||
``` | ||
|
||
|
||
## NGINX Agent proxy authentication | ||
|
||
If your Squid proxy requires authentication, you can specify the username and password in the `proxy` section of the `agent.conf` file: | ||
|
||
1. Open a secure connection to your instance using SSH and log in. | ||
1. Open the NGINX Agent configuration file (/etc/nginx-agent/nginx-agent.conf) with a text editor. | ||
1. Add or modify the `proxy` section to include the authentication details: | ||
|
||
```conf | ||
proxy: | ||
url: "http://proxy.example.com:3128" | ||
auth_method: "basic" | ||
username: "user" | ||
password: "pass" | ||
``` | ||
|
||
1. Reload NGINX Agent to apply the changes: | ||
|
||
```sh | ||
sudo systemctl restart nginx-agent | ||
``` | ||
|
||
### In a containerized environment | ||
|
||
To set proxy authentication in a containerized environment: | ||
|
||
1. Run the NGINX Agent container with the environment variables set as follows: | ||
|
||
```sh | ||
docker run -d \ | ||
--name nginx-agent \ | ||
-e NGINX_AGENT_COMMAND_SERVER_PROXY_URL=http://proxy.example.com:3128 | ||
-e NGINX_AGENT_COMMAND_SERVER_PROXY_AUTH_METHOD=basic | ||
-e NGINX_AGENT_COMMAND_SERVER_PROXY_USERNAME="user" | ||
-e NGINX_AGENT_COMMAND_SERVER_PROXY_PASSWORD="pass" | ||
nginx/nginx-agent:latest | ||
``` | ||
|
||
|
||
## Validate connectivity between NGINX Agent, Squid, and NGINX One Console | ||
|
||
To test the connectivity between NGINX Agent, Squid, and NGINX One Console, you can use the `curl` command with the proxy settings. | ||
|
||
1. Open a secure connection to your instance using SSH and log in. | ||
1. Run the following `curl` command to test the connection: | ||
```sh | ||
curl -x http://proxy.example.com:3128 -U your_user:your_password https://mgmt.example.com/api/v1/agents | ||
``` | ||
|
||
- Replace `proxy.example.com:3128` with your Squid proxy address and port. | ||
- Replace `your_user` and `your_password` with the credentials you set up for Squid in the previous steps. | ||
- Replace `mgmt.example.com` with your NGINX One Console address. | ||
|
||
To test the configuration from a containerized environment, run the following command from within the container: | ||
|
||
```sh | ||
curl -x http://host.docker.internal:3128 -U your_user:your_password https://mgmt.example.com/api/v1/agents | ||
``` | ||
|
||
- Replace `your_user` and `your_password` with the credentials you set up for Squid in the previous steps. | ||
- Replace `mgmt.example.com` with your NGINX One Console address. | ||
|
||
## Troubleshooting | ||
|
||
1. Find the configuration and log files: | ||
|
||
- Run `squid -v`. | ||
- Look for the `--sysconfdir` flag (usually `/usr/local/etc/squid/squid.conf` or `/opt/homebrew/etc/squid.conf` on | ||
Mac OS, and `/etc/squid/squid.conf` on Ubuntu) to find the configuration file. | ||
- Look for the `--prefix` flag to find the log file path (usually `/usr/local/var/logs/squid` or `/opt/homebrew/var/logs/squid` | ||
on Mac OS, and `/var/log/squid` on Ubuntu) to find the log files. | ||
- Look for the `--localstatedir` flag to find the cache directory path (usually `/usr/local/var/cache/squid` or `/opt/homebrew/var/cache/squid` | ||
on Mac OS, and `/var/spool/squid` on Ubuntu) to find the cache directory. | ||
|
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.