在 nginx 1.15.8 中安装 more_set_headers

在 nginx 1.15.8 中安装 more_set_headers

Ubuntu 16 Server-load_module modules/ngx_http_headers_more_filter_module.so全新安装后无法正常运行。

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'

尝试安装时nginx-extras我收到依赖性错误。

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.

为了满足依赖关系,它让我回到 nginx 1.10

我通过添加到/etc/apt/sources.list文件来安装 nginx

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

有人可以解释一下我的问题吗?

答案1

这是我在 Ubuntu 16.04 上启用 more_set_headers 的方法,因为该模块是一个额外的模块,不是由 nginx 创建的,正如@MichaelHampton 在下面解释的那样。在他的指导下,我能够使用 more_set_headers 安装 nginx。

#==  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

完成上述操作后,我编辑了我的内容/etc/nginx/nginx.conf并添加以下内容作为第一行:
load_module modules/ngx_http_headers_more_filter_module.so;

然后我在 http 块中添加了以下内容:
more_set_headers Server: Uber;

我检查了一下我的配置是否正确nginx -t

最后,我重启了服务器service nginx restart

作为最后的检查,我去了https://securityheaders.com,看看是否显示“Nginx”。一定要检查隐藏结果遵循重定向

在 Header Security 查看结果

希望这对某人有帮助

答案2

看看我的教程这里有关我在 Amazon Linux(类似于 Centos/Red Hat)上如何执行此操作的更多详细信息。这是我之前写的,我偶尔会更新它,但它可能并不完美。我会测试它并在有时间时再次更新。

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

答案3

Curuios Sam 的回答没有解释为什么会发生这种情况,而 Michael Hampton 的评论却解释了原因,我将两者汇总如下,以便于阅读。

发生这种情况是因为您要查找的模块(http-more)在 nginx.com repo 中不存在

该模块列表可以在以下位置找到https://www.nginx.com/products/nginx/modules(通过 nginx 过滤作者)。

可以从 nginx ppa 中的 nginx-extras 包中找到 http-more。

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


首先从 /etc/apt/sources.list 中删除 nginx.com repo,然后添加 ppa。

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

然后升级 nginx-common 和 nginx-extras

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

相关内容