1.首先,找到Nginx安装包的位置。比如,我的是:/usr/local/src/nginx-1.15.1

cd /usr/local/src/nginx-1.15.1

【查看Nginx版本命令】/usr/local/nginx/sbin/nginx -V (/usr/local/nginx/是你Nginx服务器的实际位置)

2.生成新的Nginx配置。执行

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

查看configure arguments:后边有没有值,如果有,就复制下来。

然后执行

./configure --原来有的模块(如果有的话) --with-http_ssl_module

然后覆盖nginx之前的二进制文件(注意,make就可以了,不需要make install)

make

3.关闭现在运行的Nginx服务器。

/usr/local/nginx/sbin/nginx -s stop

由于我的配置文件报错,缺少

nginx: [emerg] the “ssl” parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:121

所以无法关闭。于是,我尝试把新的正确的nginx.conf替换出问题的nginx.conf。

再次执行关闭,成功。

4.OK,执行最后的步骤。把编译好的nginx覆盖掉原有的nginx。

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

此时会询问是否覆盖,输入y同意,开始覆盖。如果提示文件繁忙,也可以先去到nginx安装目录下sbin目录把nginx先停止,再完成上述覆盖操作。

然后我们重启nginx,配置好ssl就可以正常使用了。

server {  
listen 443 ssl;
server_name edu.a.com;
root /home/iaiai/workstation/webapp/www;
# ssl on;
ssl_certificate /home/iaiai/workstation/ssl/server.crt;
ssl_certificate_key /home/iaiai/workstation/ssl/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!3DES:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;

location /api/ {
#之前http怎么配置的还怎么配置
}
}