详解nginx使用ssl模块配置支持HTTPS访问

 更新时间:2018年08月08日 11:33:26   作者:杜_小妖  
这篇文章主要介绍了详解nginx使用ssl模块配置支持HTTPS访问,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

背景:

项目开发中用到了微信小程序,但是服务器配置URL必须是HTTPS,所以需要通过配置nginx的SSL模块来支持HTTPS访问,也就是说,要做一个网站域名为 dmsdbj.com 要求通过HTTPS://dmsdbj.com进行访问.

SSL英文名为Secure Socket Layer,安全套接字层。SSL是一种数字证书,它使用ssl协议在浏览器和web server之间建立一条安全通道,数据信息在client与server之间的安全传输.

本篇博客是对这个操作步骤的详解。

前提:

1. 配置SSL模块首先需要CA证书,CA证书可以自己手动颁发也可以在阿里云申请,本人在阿里云上申请的证书。(手动颁发可参考文章底部链接)

2. 默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数.

阿里云购买CA证书

操作步骤:

一、下载CA证书

1. 登录阿里云,选择“控制台”-“产品与服务”,在“安全(云盾)”一栏中选择“CA证书服务(数据安全)”。

2.在已经购买好的证书点击“下载”,在新打开的页面上选择“Nginx/Tengine”,点击“下载证书for Nginx”。

二、在Nginx配置文件中安装证书

文件说明:1. 证书文件“证书名称.pem‘',包含两段内容,请不要删除任何一段内容。2. 如果是证书系统创建的CSR,还包含:证书私钥文件“证书名称.key”。( 1 ) 在Nginx的配置文件所在的目录下创建cert文件夹,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为“证书名称.key”;

( 2 ) 打开 Nginx 安装目录下 conf 目录中的 nginx.conf 文件,找到:

# HTTPS server
# #server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
# ssl_prefer_server_ciphers on;
# location / {
#
#
#}
#}

( 3 ) 将其修改为 (以下属性中ssl开头的属性与证书配置有直接关系,其它属性请结合自己的实际情况复制或调整) :

server {
  listen 443;
  server_name localhost;
  ssl on;
  root html;
  index index.html index.htm;
  ssl_certificate  cert/证书名称.pem;
  ssl_certificate_key cert/证书名称.key;
  ssl_session_timeout 5m;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  location / {
    root html;
    index index.html index.htm;
  }
}

保存退出。

( 4 )重启 Nginx。

nginx -s reload 

( 5 ) 通过 https 方式访问您的站点,测试站点证书的安装配置。 在浏览器中输入https://dmsdbj.com,如下图所示,则说明配置成功。

安装过程中遇见的问题

错误一:

nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/nginx.conf:151

解决方案:

出现这种错误可能是两种情况造成的:

情况一:配置文件格式不正确。

解决方法参考链接:https://www.jb51.net/article/141569.htm

情况二:ssl模块并未被安装

默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数,这种情况也会导致错误二的出现。

解决方案:

nginx缺少http_ssl_module模块,编译安装的时候带上--with-http_ssl_module配置就行了,但是现在的情况是我的nginx已经安装过了,怎么添加模块,其实也很简单,往下看: 做个说明:我的nginx的安装目录是/usr/local/nginx这个目录,我的源码包在/usr/local/src/nginx-1.3.6目录

(1)切换到源码包:

cd /root/nginx-1.13.6

(2)配置信息:

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

(3)配置完成后,运行make进行编译,千万不要进行make install,否则就是覆盖安装。

mark

(4)然后备份原有已经安装好的nginx

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

(5)停止Nginx,正常命令直接 nginx -s stop就可以

nginx -s stop

如果关不掉,就直接Kill掉进程。ps aux | grep 进程名 查看进程占用的PID号。

ps aux|grep nginx

杀掉查出来的PID就可以了,kill -9 PID 命令用于终止进程。必须先kill掉root对应的PID才能进行下面的三个nobody的PID。

kill -9 10922
kill -9 28276
kill -9 28277
kill -9 28278

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

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

(7)启动nginx

nginx

(8)通过下面的命令查看是否已经加入成功。

nginx -V

错误二:

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

解决方案:

出现这种情况的解决方案参考错误一的第二种情况的解决方案即可。

错误三:

Stoping nginx... nginx: [emerg] BIO_new_file("/usr/local/nginx/conf/cert/214291778530222.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/usr/local/nginx/conf/cert/214291778530222.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file) failed. Use force-quit

解决方案:

这可能是证书路径存放的位置不正确导致的,而且只要写绝对路径,就会报错,无论windows还是linux。

将证书文件放到nginx.conf所在的目录下即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • nginx全局块的user指令的实现示例

    nginx全局块的user指令的实现示例

    user用于配置运行Nginx服务器的worker进程的用户和用户组,本文主要介绍了nginx全局块的user指令的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • linux下Nginx 0.8.40的安装方法

    linux下Nginx 0.8.40的安装方法

    这篇文章主要介绍了linux下Nginx 0.8.40的安装方法,需要的朋友可以参考下
    2014-11-11
  • 通过Nginx实现前端与后端的协同部署

    通过Nginx实现前端与后端的协同部署

    在现代 web 开发中,前端与后端的协同部署是一个关键问题,一个高效的部署策略不仅能提升用户体验,还能简化开发流程,今天,我们就来探讨如何利用 Nginx 实现前端与后端的协同部署,需要的朋友可以参考下
    2025-03-03
  • nginx利用referer指令实现防盗链配置

    nginx利用referer指令实现防盗链配置

    nginx模块ngx_http_referer_module通常用于阻挡来源非法的域名请求,我们应该牢记。下面这篇文章主要介绍了nginx利用referer指令实现防盗链配置的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • nginx php-fpm 小VPS 优化

    nginx php-fpm 小VPS 优化

    小VPS受系统资源的限制,访问量过大,超过系统所能承受的极限时,有一部分请求就会502了。在系统资源够用的情况,优化nginx,php-fpm,以及系统本身
    2016-05-05
  • Nginx配置反向代理服务器实现在https网站中请求http资源

    Nginx配置反向代理服务器实现在https网站中请求http资源

    ‌Nginx反向代理‌是一种将客户端请求转发到后端服务器的技术,主要用于负载均衡、提高安全性和提升性能,本文给大家介绍了Nginx配置反向代理服务器实现在https网站中请求http资源,需要的朋友可以参考下
    2025-03-03
  • Nginx服务器中414错误和504错误的配置解决方法

    Nginx服务器中414错误和504错误的配置解决方法

    这篇文章主要介绍了Nginx服务器中414错误和504错误的配置解决方法,分别对应Request-URI Too Large和Gateway Time-out这样的错误提示,需要的朋友可以参考下
    2015-12-12
  • 详解nginx惊群问题的解决方式

    详解nginx惊群问题的解决方式

    这篇文章主要介绍了详解nginx惊群问题的解决方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • nginx 499错误处理及nginx的配置参数小结

    nginx 499错误处理及nginx的配置参数小结

    在项目容器化改造中,修改Nginx超时设置可解决499错误,本文就来介绍一下nginx 499错误处理及nginx的配置参数小结,感兴趣的可以了解一下
    2024-09-09
  • Nginx http运行状况健康检查配置过程解析

    Nginx http运行状况健康检查配置过程解析

    这篇文章主要介绍了Nginx http运行状况健康检查配置过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08

最新评论