Вместе с certbot

Чтобы включить подмножество языка JavaScript njs вместе с Nginx, мы можем установить его из исходного кода. В этом руководстве я предоставлю информацию об этой настройке для Ubuntu 20.04.1 LTS.

Сначала проверьте страницу загрузок здесь последней стабильной версии: http://nginx.org/en/download.html

Мы будем загружать версию 1.18.0, что можно сделать с помощью:

$ cd ~
$ wget http://nginx.org/download/nginx-1.18.0.tar.gz
$ tar -zxvf nginx-1.18.0.tar.gz

Подготовка системы

Убедитесь, что на вашем хост-компьютере установлена ​​последняя версия, и установите некоторые необходимые пакеты:

$ sudo apt-get update
$ sudo apt-get install build-essential
$ sudo apt-get install libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev

Если вы уже установили Nginx через apt-get, обязательно удалите его перед установкой из источника:

$ sudo apt-get remove nginx nginx-common

Модуль JavaScript

Затем мы загрузим mercurial, чтобы получить исходный код для модуля njs (ngx_http_js_module).

$ sudo apt-get install mercurial

Теперь клонируйте код модуля njs, настройте и запустите make.

$ cd ~
$ hg clone http://hg.nginx.org/njs
$ cd njs
$ sudo ./configure
$ sudo make

Установить Nginx

Теперь хост-компьютер готов к установке Nginx из исходников. Перейдите в каталог загрузки и настройте установку.

$ cd ~/nginx-1.18.0

Чтобы увидеть параметры модулей, которые могут быть включены при настройке, используйте параметр help:

$ ./configure --help

Я собираюсь включить в свою установку следующие модули / библиотеки:

  • Библиотека PCRE
  • ngx_http_ssl_module
  • ngx_http_v2_module
  • ngx_http_auth_request_module
  • ngx_http_js_module

Последняя команда настройки выглядит так:

$ ./configure --sbin-path=/usr/bin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-pcre --pid-path=/var/run/nginx.pid --with-http_ssl_module --with-http_auth_request_module --modules-path=/usr/local/nginx/modules --with-http_v2_module --add-module=$HOME/njs/nginx

Обратите внимание, что я включаю ngx_http_js_module, используя параметр --add-module, что означает, что он не будет установлен как динамический модуль. Это также означает, что директиву load_module modules/ngx_http_js_module.so не нужно использовать в моем файле конфигурации nginx.

После успешного завершения настройки запустите make и install:

$ sudo make
$ sudo make install

Наконец, убедитесь, что nginx установлен правильно, и запустите его:

$ which nginx
/usr/bin/nginx
$ sudo nginx

Вы можете запустить $ ps aux | grep nginx, чтобы убедиться, что главный и рабочий процессы запущены. Вот и все!

Бонус: установить Certbot

Инструкции по установке certbot можно найти на сайте certbot.eff.org. Более конкретно, для ubuntu проверьте здесь: https://certbot.eff.org/lets-encrypt/ubuntufocal-nginx

В качестве краткого справочника вот список команд из их руководства, которые я обычно использую для установки certbot:

$ sudo snap install core; sudo snap refresh core
$ apt-get remove certbot
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot