# Prepare - Set up an explicit forward proxy




NGINX Agent can be configured to connect to NGINX One using an explicit forward
proxy. This is useful in environments where direct internet access is restricted or monitored.

## Before you start

Ensure you have the following:

- An explicit forward proxy server installed and configured in your network.
- [NGINX Agent is installed](/nginx-one-console/agent/install-upgrade/)
- Access to the [NGINX One console](/nginx-one-console/getting-started.md#before-you-begin).

## NGINX Agent configuration for proxy usage

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. To edit this file you need superuser privileges.
1. Add or modify the `proxy` section to include the proxy URL, port number, and timeout settings:

   ```conf
   server:
      host: agent.connect.nginx.com
      port: 443
      proxy:
         url: "http://proxy.example.com:<port number>"
   ```

1. Restart 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
   sudo docker run \
      --add-host "myproxy.example.com:host-gateway" \
      --env=NGINX_AGENT_COMMAND_SERVER_PORT=443 \
      --env=NGINX_AGENT_COMMAND_SERVER_HOST=agent.connect.nginx.com \
      --env=NGINX_AGENT_COMMAND_AUTH_TOKEN=<YOUR_DATAPLANE_KEY_HERE> \
      --env=NGINX_AGENT_COMMAND_TLS_SKIP_VERIFY=false \
      --env=NGINX_AGENT_COMMAND_SERVER_PROXY_URL=http://myproxy.example.com:<port number> \
      --restart=always \
      --runtime=runc \
      -d private-registry.nginx.com/nginx-plus/agentv3:latest
   ```

## NGINX Agent proxy authentication

If your forward 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. Add or modify the `proxy` section of the NGINX Agent configuration file (/etc/nginx-agent/nginx-agent.conf) to include the authentication details:

   ```conf
   proxy:
      url: "http://proxy.example.com:<port number>"
      auth_method: "basic"
      username: "user"
      password: "pass"
   ```

1. Restart 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
   sudo docker run \
      --add-host "myproxy.example.com:host-gateway" \
      --env=NGINX_AGENT_COMMAND_SERVER_PORT=443 \
      --env=NGINX_AGENT_COMMAND_SERVER_HOST=agent.connect.nginx.com \
      --env=NGINX_AGENT_COMMAND_AUTH_TOKEN="<your-data-plane-key-here>" \
      --env=NGINX_AGENT_COMMAND_TLS_SKIP_VERIFY=false \
      --env NGINX_AGENT_COMMAND_SERVER_PROXY_URL=http://proxy.example.com:<port number>
      --env NGINX_AGENT_COMMAND_SERVER_PROXY_AUTH_METHOD=basic
      --env NGINX_AGENT_COMMAND_SERVER_PROXY_USERNAME="user"
      --env NGINX_AGENT_COMMAND_SERVER_PROXY_PASSWORD="pass"
      --restart=always \
      --runtime=runc \
      -d private-registry.nginx.com/nginx-plus/agentv3:latest
   ```

## Validate connectivity between the components

To test the connectivity between NGINX Agent, your proxy, 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:<port number> -U your_user:your_password https://agent.connect.nginx.com/api/v1/agents
   ```

   - Replace `proxy.example.com:<port number>` with your proxy address and port number.
   - Replace `your_user` and `your_password` with the credentials you set up for proxy in the previous steps.

To test the configuration from a containerized environment, run the following command from within the container:

   ```sh
   curl -x http://host.docker.internal:<port number> -U your_user:your_password https://agent.connect.nginx.com/api/v1/agents
   ```

   - Replace `your_user` and `your_password` with the credentials you set up for proxy in the previous steps.


