# Nginx Error "Conflicting Server Name" Ignored

The Nginx error `Conflicting server name` occurs when multiple server blocks in the Nginx configuration file have the same `server_name` directive. Nginx uses the `server_name` directive to determine which server block to use for a given request based on the `Host` header in the HTTP request. When multiple server blocks have the same `server_name`, Nginx will issue a warning and use the first server block it encounters with that name.

### **Causes and Solutions**

Here’s a step-by-step guide to identify and resolve the `Conflicting server name` error:

### **1. Identify the Conflicting Server Blocks**

To find where the conflicting server names are defined, you can search your Nginx configuration files.

**Command to Find Conflicting Server Names:**

```bash
grep -r "server_name" /etc/nginx/
```

**Explanation:**

- **`grep -r "server_name" /etc/nginx/`**: Recursively searches for `server_name` in all Nginx configuration files within the `/etc/nginx/` directory.

Look for multiple `server` blocks with the same `server_name` value.

### **2. Review and Correct Configuration**

Once you’ve identified the conflicting server blocks, review and adjust your Nginx configuration. Ensure that each `server_name` is unique if you need different server blocks to handle different domains or subdomains.

**Example of Conflicting Server Blocks:**

```
server {
    listen 80;
    server_name example.com;

    # Configuration for example.com
}

server {
    listen 80;
    server_name example.com;

    # Another configuration for example.com
}

```

**Resolution:**

Ensure that each `server_name` is unique or that the configurations are intended to be the same.

**Corrected Configuration Example:**

```
server {
    listen 80;
    server_name example.com;

    # Configuration for example.com
}

server {
    listen 80;
    server_name www.example.com;

    # Configuration for www.example.com
}

```

### **3. Use Default Server Block**

If you want to use a default server block for requests that don’t match any other server names, you can use the `default_server` parameter with the `listen` directive.

**Example Default Server Block:**

```
server {
    listen 80 default_server;
    server_name _;  # Matches any server name

    # Default configuration
}

```

**Explanation:**

- **`listen 80 default_server;`**: This server block will be used for requests that do not match any other `server_name`.

### **4. Validate Configuration**

After making changes, validate the Nginx configuration to ensure there are no syntax errors.

**Command to Test Configuration:**

```bash
sudo nginx -t
```

**Explanation:**

- **`nginx -t`**: Tests the configuration for syntax errors and outputs results.

### **5. Restart Nginx**

Apply the changes by reloading or restarting Nginx.

**Reload Command:**

```bash
sudo systemctl reload nginx
```

**Or Restart Command:**

```bash
sudo systemctl restart nginx
```

### **Summary**

To resolve the `Conflicting server name` error in Nginx:

1. **Identify Conflicts:** Use `grep` to find all instances of `server_name` in your configuration files.
2. **Review and Correct:** Ensure each `server_name` is unique or intentionally duplicated.
3. **Use Default Server Block:** Configure a default server block if needed.
4. **Validate Configuration:** Test your configuration with `nginx -t`.
5. **Reload or Restart Nginx:** Apply changes with `systemctl reload nginx` or `systemctl restart nginx`.

By addressing conflicting `server_name` directives and ensuring unique configurations, you can resolve the `Conflicting server name` error and ensure that Nginx correctly routes requests to the intended server blocks.