Nginx 服务器Linux

Nginx 配置 Https 模块

2018-08-04  本文已影响55人  雨林_a1d6

在如今越来越强调隐私与数据安全的情况下,我们的资源访问当然也要尽可能的安全,我们知道 HTTP 协议是明文传输的,因此不能保证数据的安全性,而 HTTPS 则是对传输的数据进行了加密,提高数据传输的安全性。下面就介绍一下为 Nginx 配置 Https 模块的方式。

一、系统环境


CentOS 6.9

Nginx 1.13.0

二、已经安装过 Nginx


2.1 使用场景

某服务器上已经安装过 Nginx,在 nginx.conf 中配置了 SSL (HTTPS) 后重启 nginx 出现以下错误信息:

nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:37

2.2 原因

由于 nginx 缺少了 http_ssl_module 模块。

我们可以使用如下命令查看安装 nginx 时的配置参数,如:

[root@NC01077718 ~]# nginx -V
nginx version: nginx/1.13.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx

可以看到配置参数只有 --prefix=/usr/local/nginx,没有 http_ssl_module。

2.3 解决方法

重新编译安装 nginx,并在编译时加入 http_ssl_module 模块。在进行重新编译时,要清楚几个信息,如下示例:

nginx 的安装目录: /usr/local/nginx
nginx 的源码目录:/data/software/nginx/nginx-1.13.0/

(1) 重新配置

进入源码目录,执行如下命令重新配置:

[root@hadoop1 nginx-1.13.0]# cd /data/software/nginx/nginx-1.13.0

[root@hadoop1 nginx-1.13.0]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

等待编译完成,如果没有出现 Error 信息,表示编译成功

编译过程

注:

由于是已经安装过 nginx 的环境了。因此,理论上 nginx 所依赖的系统库(如 PCRE 等库)也已经具备了。

(2) 重新编译

运行如下命令进行编译

[root@hadoop1 nginx-1.13.0]# pwd
/data/software/nginx/nginx-1.13.0
[root@hadoop1 nginx-1.13.0]# make

(3) 备份已安装好的 nginx

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

(4) 停止 nginx (如果在运行状态)

nginx -s stop

(5) 覆盖原有的 nginx

将刚刚编译好的 nginx 覆盖掉原有的 nginx

cp ./objs/nginx /usr/local/nginx/sbin/

(6) 查看覆盖后的 nginx 的配置信息

[root@hadoop1 objs]# nginx -V
nginx version: nginx/1.13.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

可以看到,配置参数中已经带有了 http_ssl_module 模块,说明重新编译并替换成功

三、全新安装


如果是未安装 Nginx 的服务器,则使用如下方式全新安装,安装文档中已经加入了 nginx https 模块。

CentOS 6.7 编译安装 nginx

附录一:配置 nginx https


Nginx https 配置示例:

server{
        listen       80;
        server_name  api.jiangzhuolin.com;
        # force redirect http to https
        rewrite ^ https://$http_host$request_uri?permanent;
}

server {
        listen 443 ssl;
        # ssl on;
        server_name api.jiangzhuolin.com;
        index index.html index.htm index.jsp index.php;
        if ( $query_string ~* ".*[\;'\<\>].*" ){
                return 404;
        }

        location / {
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://localhost:9090;
        }

        ssl_certificate /usr/local/nginx/ssl/jiangzhuolin.com.cer;
        ssl_certificate_key /usr/local/nginx/ssl/cert.key;

        fastcgi_param   HTTPS               on;
        fastcgi_param   HTTP_SCHEME         https;
        access_log      /usr/local/nginx/logs/api.jiangzhuolin.com.access.log;
        error_log       /usr/local/nginx/logs/api.jiangzhuolin.com.error.log;
}

注:

上一篇下一篇

猜你喜欢

热点阅读