Как собрать Nginx с модулями ngx_http_stub_status_module и ngx_http_geoip_module из исходного кода Alpine?

Как добавить модули ngx_http_stub_status_module и ngx_http_geoip_module к сборке nginx из исходного кода alpine?
  • 27 января 2024 г. 11:28
Ответы на вопрос 2
Чтобы собрать Nginx с модулями `ngx_http_stub_status_module` и `ngx_http_geoip_module` из исходного кода на Alpine Linux, вам потребуется выполнить ряд шагов. Ниже приведены детальные инструкции.

1. Установите необходимые пакеты для сборки из исходных кодов:
   ```sh
   apk add --update alpine-sdk
   apk add linux-headers gd gd-dev libxpm-dev libxslt-dev geoip-dev pcre-dev zlib-dev libressl-dev
   ```

2. Скачайте исходный код nginx:
   ```sh
   wget http://nginx.org/download/nginx-1.21.6.tar.gz # Замените на актуальную версию если нужно
   tar zxvf nginx-1.21.6.tar.gz
   cd nginx-1.21.6/
   ```

3. Настройте сборку:
   ```sh
   ./configure --with-http_ssl_module \
               --with-http_geoip_module \
               --with-http_stub_status_module \
               # Добавьте другие нужные опции, если таковые имеются
   ```
   Модули `ngx_http_stub_status_module` и `ngx_http_geoip_module` включены по умолчанию, так что выше обычно их явно указывать не нужно, однако, если хотите быть в этом уверенны, можно их включить в конфигурационную команду как показано выше. Будьте внимательны при добавлении других модулей, так как некоторые из них могут требовать дополнительных библиотек или зависимостей. Не забудьте установить их перед настройкой сборки.

4. Соберите nginx и установите его:
   ```sh
   make
   make install
   ```

После этого Nginx будет собран и установлен с указанными модулями. Чтобы убедиться, что всё работает корректно, вы можете запустить nginx с опцией `-V`, чтобы увидеть скомпилированные модули:
```sh
/usr/local/nginx/sbin/nginx -V
```

Заметьте, что для использования модуля GeoIP вам потребуется создать или скопировать файлы с базами данных GeoIP в соответствующую директорию, а также настроить nginx, указав пути к этим файлам в конфигурационном файле (`nginx.conf`).

Например, добавьте следующие строки для модуля GeoIP:
```nginx
http {
    geoip_country  /path/to/GeoIP.dat;
    geoip_city     /path/to/GeoIPCity.dat;
    ...
}
```

И аналогично для `stub_status`:
```nginx
server {
    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;  # Разрешить доступ только с локальной машины
        deny all;          # Запретить доступ всем остальным
    }
}
```

Теперь ваш nginx собран с модулями `ngx_http_stub_status_module` и `ngx_http_geoip_module` и готов к использованию.
Dockerfile: 
1. Берёте образ с чистым alpine.
2. Скачиваете и распаковываете сорсы nginx и модулей.
3. Компилируете nginx с нужными модулями.
4. Добавляете эндпоинт с бинарником nginx.
Похожие вопросы