【Linux(CentOS7)下应用的安装部署】:四、Nginx安装配置(ssl)

首先去阿里云上购买(也有免费的)ssl 证书,下载放到服务器上(两份文凭分别  xxxx.key和xxx.crt)

 

修改 nginx.conf 文件  ,并重启

 server{

        listen 80;
        listen 443 ssl;    #监听443端口
        server_name xxx.com;    #对应的域名,把xxx.com改成你们自己的域名就可以了
        ssl_certificate xxx.crt;          #申请的xxx.crt文件的位置
        ssl_certificate_key xxxx.key;        #申请的xxx.key文件的位置
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
     
        location / {      #这是我的主页访问地址,因为使用的是静态的html网页,所以直接使用location就可以完成了。
                #文件夹
                root /usr/local/service/ROOT;
                #主页文件
                index index.html;
        }
    }

 

如果在配置网站SSL证书的时候,把SSL相关的配置加到了nginx的配置文件中后,nginx启动不了,用 systemctl status nginx 查看到的错误信息大致如下:

Failed to start SYSV: Nginx is an HTTP(S) server, HTTP(S) reverse ...

于是用如下命令测试问题所在:

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

其中,/usr/local/nginx/sbin/nginx 是我的nginx安装后的可执行程序路径,/usr/local/nginx/conf/nginx.conf 是我的nginx主配置文件路径。

该命令输出如下:

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

可见,nginx缺少SSL模块支持。这是因为我当年建站的时候根本没用到SSL啊,所以以前编译nginx的时候使用了不带SSL支持的默认编译参数。
为了让nginx添加SSL模块,只能重新编译它。但是,如何在现有nginx的基础上,添加一个支持SSL的编译参数呢?首先要找回原来编译nginx时的编译参数,然后再加上支持SSL的编译参数。如果不这样做,那么编译出来的nginx可能就会有问题(某些旧的编译参数被去掉了,使得nginx不能支持某些功能)。

所以先查看旧的nginx的编译参数:

/usr/local/nginx/sbin/nginx -V

输出的信息中,如果没有红色字部份都说明没有安装上ssl模块:

[root@iz8vb7jdx32kgyqpdi6fgtz nginx]# ./sbin/nginx -V
nginx version: nginx/1.13.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module
 

可见,当时我编译nginx的时候,只是指定了一个安装路径,没有其他特殊的编译参数。那么现在事情就好办了:回到nginx的源码目录下,加上SSL支持参数重新编译:

 

1

2

./configure --prefix=/usr/local/nginx --with-http_ssl_module

make

注意,此时千万不能手快直接 make install!因为我原来的nginx还有一堆的配置文件,不能被覆盖。我们应该只覆盖编译出来的nginx可执行程序:

1

2

cp /usr/local/nginx/sbin/nginx ~/

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

其中,objs/nginx 是新编译出来的nginx可执行程序。
覆盖之后,再尝试重新启动nginx,就没有问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值