Сравнение Nginx и Caddy: настройка поддоменов с подстановочными знаками

Сравнение Nginx и Caddy: настройка поддоменов с подстановочными знаками

5 апреля 2024 г.

Введение

Субдомены с подстановочными знаками позволяют динамически обрабатывать несколько субдоменов в родительском домене без явного определения конфигурации для каждого субдомена.

An illustration of a multitenant application with subdomains

Обычным вариантом использования поддоменов с подстановочными знаками являются мультитенантные приложения, где каждый клиент получает доступ к приложению из своего уникального домена. В этом случае настройка каждого поддомена вручную нецелесообразна.

В этой статье мы рассмотрим настройку поддоменов с подстановочными знаками в Nginx и Caddy и сравним оба варианта.

Требования

  • В статье предполагается, что у вас установлены Nginx и Caddy.

Конфигурация Nginx

Для начала создадим новый файл конфигурации. Для обновления конфигурации вам необходим root-доступ, поэтому мы добавим к команде префикс sudo.

sudo nano /etc/nginx/sites-available/app.com

Добавьте в файл следующую конфигурацию:

server {

    server_name *.app.com;

    location / {
        proxy_pass http://127.0.0.1:8090;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Эта конфигурация передает все запросы службе, работающей на порту 8090. Ключевой бит — server_name *.app.com; это указывает nginx обрабатывать все запросы, сделанные к *.app. com (customer1.app.com, customer2. app.com ...).

Конфигурация Caddy

Как и в случае с Nginx, мы начнем с редактирования основного файла конфигурации и добавления к вызову префикса sudo, поскольку для этого требуется root-доступ:

sudo nano /etc/caddy/Caddyfile

И содержание:

*.app.com {
    request_body {
        max_size 10MB
    }
    reverse_proxy 127.0.0.1:8090 {
        transport http {
            read_timeout 360s
        }
    }
}

Сравнение и выводы

И Nginx, и Caddy имеют схожие шаблоны конфигурации; у них обоих разные подходы, поэтому синтаксис сильно различается. Однако оба они обеспечивают почти одинаковый уровень гибкости и функциональности, причем Caddy больше похож на JSON и поддерживает его изначально.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE