When installing nginx on Linux, it is not possible to configure the installation to add or remove modules and nginx is installed "as is".

    If any module needs to be added, nginx needs to be rebuilt manually.

    # nginx -V
    
    nginx version: nginx/1.12.1  
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)  
    built with OpenSSL 1.0.1e-fips on Feb 11, 2013  
    TLS SNI support enabled  
    configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log  
    --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
    --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock
    --pid-path=/var/run/nginx.pid --with-pcre-jit --with-http_gzip_static_module --with-http_ssl_module --with-ipv6
    --without-http_browser_module -without-http_geo_module -without-http_limit_req_module -without-http_limit_zone_module
    --without-http_memcached_module -without-http_referer_module -without-http_scgi_module -without-http_split_clients_module
    --with-http_stub_status_module -without-http_ssi_module -without-http_userid_module -without-http_uwsgi_module
    --add-module=/tmp/buildd/nginx-1.12.0/debian/modules/nginx-echo
    

    Let's save the output of the nginx -V command to a text editor. This information will be useful for configuring the system
    We see that we have nginx version 1.12.1 installed - download the same version:

    # wget http://nginx.org/download/nginx-1.12.1.tar.gz
    

    Unpack the archive and go to the folder nginx-1.12.1:

    # tar -xvf nginx-1.12.1.tar.gz
    # cd nginx-1.12.1
    

    Next, you will need to install a preinstalled set of modules.

    # bash <(curl -f -L -sS https://ngxpagespeed.com/install) \
         --nginx-version $nginxversion
    

    Save all modules:

    bash <(curl -f -L -sS https://ngxpagespeed.com/install) -m  
    

    After installing the packages, proceed to configure nginx with the addition of modules.

    To do this copy from a text editor the output of the command nginx -V starting from --prefix= to the first --add-module= (all the --add_module= present in the output are not needed)
    After that we write in the console ./configure and paste copied from the editor:

    ./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
    --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
    --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock
    --pid-path=/var/run/nginx.pid --with-pcre-jit --with-http_gzip_static_module --with-http_ssl_module --with-ipv6
    --without-http_browser_module -without-http_geoip_module -without-http_memcached_module -without-http_referer_module
    --without-http_scgi_module -without-http_split_clients_module -without-http_stub_status_module -without-http_ssi_module
    --without-http_userid_module -without-http_uwsgi_module 
    

    At the end of the line add --add-dynamic-module=/root/incubator-pagespeed-ngx-latest-stable to make it like this:

    ./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
    --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
    --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock
    --pid-path=/var/run/nginx.pid --with-pcre-jit --with-http_gzip_static_module --with-http_ssl_module --with-ipv6
    --without-http_browser_module -without-http_geoip_module -without-http_memcached_module -without-http_referer_module
    --without-http_scgi_module -without-http_split_clients_module -without-http_stub_status_module -without-http_ssi_module
    --without-http_userid_module -without-http_uwsgi_module 
    --add-dynamic-module=/root/incubator-pagespeed-ngx-latest-stable
    

    Press Enter and wait for the process to finish.

    Now you can build the nginx binary - run 2 commands:

    # make
    # make install
    

    After completing the build, check that nginx is built with the module we want:

    # /etc/nginx/sbin/nginx -V
    

    Result:

    nginx version: nginx/1.12.1  
    TLS SNI support enabled  
    configure arguments: ./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log  
    --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
    --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock
    --pid-path=/var/run/nginx.pid --with-pcre-jit --with-http_gzip_static_module --with-http_ssl_module --with-ipv6
    --without-http_browser_module -without-http_geoip_module -without-http_memcached_module -without-http_referer_module
    --without-http_scgi_module -without-http_split_clients_module -without-http_stub_status_module -without-http_ssi_module
    --without-http_userid_module -without-http_uwsgi_module 
    --add-dynamic-module=/root/incubator-pagespeed-ngx-latest-stable
    

    As you can see, --add-dynamic-module=/root/incubator-pagespeed-ngx-latest-stable is present in the output of the command. It remains to replace the current nginx binary with the new one we just built.

    Let's stop nginx:

    # service nginx stop
    

    Rename (just in case) the current nginx to nginx_back:

    # mv /usr/sbin/nginx /usr/sbin/nginx_back
    

    Move the newly built binary in its place:

    # mv /etc/nginx/sbin/nginx /usr/sbin/nginx
    

    Delete the unnecessary /etc/nginx/sbin folder:

    # rm -r -f /etc/nginx/sbin
    

    Check again that we have the right nginx now:

    # nginx -V
    

    Result:

    nginx version: nginx/1.12.1  
    TLS SNI support enabled  
    configure arguments: ./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log  
    --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
    --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock
    --pid-path=/var/run/nginx.pid --with-pcre-jit --with-http_gzip_static_module --with-http_ssl_module --with-ipv6
    --without-http_browser_module -without-http_geoip_module -without-http_memcached_module -without-http_referer_module
    --without-http_scgi_module -without-http_split_clients_module -without-http_stub_status_module -without-http_ssi_module
    --without-http_userid_module -without-http_uwsgi_module 
    --add-dynamic-module=/root/incubator-pagespeed-ngx-latest-stable
    

    Run nginx:

    # service nginx start
    

    Delete unnecessary nginx-1.12.1 folder:

    # cd ../
    # rm -r -f nginx-1.12.1