TransWikia.com

Install more_set_headers in nginx 1.15.8

Server Fault Asked by Curious Sam on October 28, 2020

Ubuntu 16 Server – load_module modules/ngx_http_headers_more_filter_module.so does not work out the box from a fresh install.

root@ /etc/nginx # nginx -V
nginx version: nginx/1.15.8
built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10)
built with OpenSSL 1.0.2g  1 Mar 2016
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'

While trying to install nginx-extras I receive a dependency error.

root@ /etc/nginx # apt-get install nginx-extras
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 nginx-extras : Depends: nginx-common (= 1.10.3-0ubuntu0.16.04.3) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

To meet the dependency, it takes me back to nginx 1.10

I installed nginx by adding to the /etc/apt/sources.list file

# nginx
deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx

Can someone shed some light on my issue?

3 Answers

This is what I did to have enable more_set_headers on Ubuntu 16.04, since the module is an extra module and not created by nginx as @MichaelHampton explained below. With his guidance I was able to install nginx with more_set_headers.

#==  I backed up my nginx folder to home    
tar -czvf /home/nginx.tar.gz /etc/nginx

#==  I removed then purged nginx - not sure if both are necessary
sudo apt remove nginx
sudo apt autoremove
sudo apt purge nginx

#==  I removed all nginx entries from /etc/apt/sources.list
nano /etc/apt/sources.list

#==  I did an apt-update and installed nginx
sudo apt update
sudo apt upgrade
sudo apt install nginx

#== I checked the version that was installed
nginx -v

#==  I then upgraded nginx to the latest stable
sudo apt install software-properties-common
nginx=stable 
sudo add-apt-repository ppa:nginx/$nginx
sudo apt update
sudo apt dist-upgrade

#==  I then installed nginx-extras
sudo apt install nginx-extras

Once the above was completed, I edited my /etc/nginx/nginx.conf and added the following as my first line:
load_module modules/ngx_http_headers_more_filter_module.so;

I then added the following to the http block:
more_set_headers Server: Uber;

I checked to see if my config was okay with nginx -t

Finally, I restarted the server with service nginx restart

As a final check, I went over to https://securityheaders.com, to see if "Nginx" was showing. Be sure to check Hide Results and Follow redirects

Check Results at Header Security

Hope this helps someone

Correct answer by Curious Sam on October 28, 2020

The answer by Curuios Sam doesn't explain why it happens and the comment by Michael Hampton does, I am compiling the both below to easier readability.

This happens because the module(http-more) you are looking for does not exist in the nginx.com repo.

That module list can be found in https://www.nginx.com/products/nginx/modules (filter author by nginx).

The http-more can be found the the nginx-extras packages from the nginx ppa.

https://launchpad.net/~nginx/+archive/ubuntu/stable


First remove the nginx.com repo from /etc/apt/sources.list, then add the ppa.

sudo add-apt-repository ppa:nginx/stable
sudo apt-get update

then upgrade nginx-common and nginx-extras

sudo apt-get install nginx-common
sudo apt-get install nginx-extras

Answered by miyuru on October 28, 2020

Have a look at my tutorial here for more details about how I did this on Amazon Linux (similar to Centos / Red Hat). I wrote this a while back, and I update it occasionally, but it may not be perfect. I'll test it and update again when I get time.

cd /home/ec2-user
mkdir nginx-build
cd nginx-build
service nginx stop
yum groupinstall "Development Tools"
yum install pcre-devel zlib-devel openssl-devel
wget http://nginx.org/download/nginx-1.15.8.tar.gz
wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
git clone https://github.com/openresty/headers-more-nginx-module.git

tar -xzf nginx-1.15.8.tar.gz
tar -xzf v0.33.tar.gz


# Includes some machine specific optimisations
./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_gunzip_module --with-http_gzip_static_module --with-threads --with-file-aio --with-http_v2_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=native' --add-module=../ngx_cache_purge-2.3 --add-module=../headers-more-nginx-module
make && make install
make clean  (NB: optional)
service nginx start

Answered by Tim on October 28, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP