文档章节

nginx--配置https服务器

JasonSE
 JasonSE
发布于 2016/10/04 10:06
字数 1193
阅读 6600
收藏 499
点赞 12
评论 2

1.下载安装nginx:

nginx可以从这里选择对应版本下载,我下载的是1.8.1版本。下载完成后,直接解压缩,命令窗口进入根目录,输入命令:

start nginx

在浏览器中,直接输入"localhost",可以看到nginx的欢迎页,表明启动成功。

2.下载安装openssl:

可从这里选择适合自己的版本下载,我下载的是:Win64 OpenSSL v1.1.0b Light,下载完成后,直接双击安装(安装选项一般默认即可)

3.生成证书

在nginx根目录下新建ssl文件夹(名字可以自己定),并在命令窗口进入此目录,按照如下的几个命令,完成证书创建过程。

#此步用于生成私钥,会提示输入密码,密码后面步骤需要用到;jason.key为私钥的名字,文件名可自己定
openssl genrsa -des3 -out jason.key 1024
#此步用于生成csr证书,jason.key为上一步骤生成的私钥名,jason.csr为证书,证书文件名可自定
#在此步过程中,会交互式输入一系列的信息(所在国家、城市、组织等),其中Common Name一项代表nginx服务访问用到的域名,我这里是本地测试,所以可以随意定一个jason.com,并在本地host文件中将此域名映射为127.0.0.1
openssl req -new -key jason.key -out jason.csr
#此步用于去除访问密码,如果不执行此步,在配置了ssl后,nginx启动会要求输入密码
#jason.key为需要密码的key,jason-np.key为去除访问密码的key文件
#操作过程中会要求输入密码,密码为生成key文件时的密码
openssl rsa -in jason.key -out jason-np.key
#此步用于生成crt证书
#jason.crt为第2步生成的csr证书名称,jason.crt为要生成的证书名称
openssl x509 -req -days 366 -in jason.csr -signkey jason-np.key -out jason.crt

经过以上几个步骤,证书生成完毕,ssl文件夹下的jason.crt和jason-np.key为我们后续要使用的文件。

注:在执行openssl命令时,可能会出现提示找不到openssl配置文件:

can't open config file: /etc/ssl/openssl.cnf

实际配置文件存在,但不在这个目录(可以在openssl安装目录找到),我们可以直接在命令窗口设置下环境变量,使其指向正确的位置

#请根据你自己的安装目录调整
set OPENSSL_CONF=C:\OpenSSL-Win64\bin\openssl.cfg

4.nginx配置ssl

打开nginx目录下conf\nginx.conf文件,找到HTTPS server的配置,将配置项前面的注释符号去掉

修改前配置内容如下:

# HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

修改后配置内容如下:

# HTTPS server

    server {
        listen       443 ssl;
        server_name  front;

        ssl_certificate      ./ssl/jason.crt;
        ssl_certificate_key  ./ssl/jason-np.key;

        #ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }

5.配置重定向,http请求自动跳转到https

如果我们希望强制使用https,可以将http的请求重定向到https,只需要在http对应server配置中添加rewrite

server {
        listen       80;
        server_name  jason.com;        
        rewrite ^(.*) https://$server_name$1 permanent; 
        #省略其他配置......
}

6.启动nginx

命令窗口进入到nginx根目录,使用以下命令重新加载nginx配置文件

nginx -s reload

这里有两点需要注意:

1)由于nginx的cache模块需要用到共享内容,所以官方提示在window Vista之后的版本是不支持cache模块的,所以在配置文件中,ssl_session_cache一行不要注释掉,否则启动会报错

2)nginxssl使用的是443端口,如果系统中443已经被占用,在nginx的error.log文件中会有报错,且无法正常启动

bind() to 0.0.0.0:443 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)

遇到这个问题,可在命令窗口通过以下命令查找占用端口的进程

netstat -ano|findstr "443"

结果列表中第2列代表进程监听的ip和端口,最后一列代表进程id,可根据id杀掉对应进程即可(有些进程是由系统服务启动的,需要关闭服务才行)。

正常启动后,浏览器中输入https://jason.com(jason.com是在第3步第2个命令中指定的),出现nginx欢迎页面,说明已配置成功。

© 著作权归作者所有

共有 人打赏支持
JasonSE
粉丝 32
博文 50
码字总数 15572
作品 0
朝阳
程序员
加载中

评论(2)

苦苦学习的渣渣
苦苦学习的渣渣
Mark
啦啦啦拉拉
啦啦啦拉拉
腾讯云可以免费申请 SSL 签证
Nginx系列-6.配置Nginx的HTTPS

Nginx系列-6.配置Nginx的HTTPS 目录 - Nginx系列 Nginx系列-1.Linux下安装Nginx Nginx系列-2.配置LNMP(Linux、Nginx、MySQL、PHP)架构 Nginx系列-3.配置Nginx虚拟主机 Nginx系列-4.Nginx日...

ngle ⋅ 06/09 ⋅ 0

nginx高可用,构建LNAMMP架构

keepalived实现nginx高可用: Directory1: IP:172.16.72.5 Directory2: IP:172.16.72.4 RS1: IP:172.16.72.6 RS2: IP:172.16.72.7 Virtual IP:172.16.72.1 ①安装nginx,keepalive......

wujunqi1996 ⋅ 2017/11/05 ⋅ 0

开启全站HTTPS时代-Nginx SSL+tomcat集群

目录: 1、凭证申请 Let’s Encrypt 2、Nginx支持多域名ssl证书 3、Nginx强制使用https访问(http跳转到https) 4、配置 Tomcat SSL For Free 免费 SSL 凭证申请 Let’s Encrypt 什么是Let’s...

Javen205 ⋅ 2017/11/18 ⋅ 0

在Linux Nginx配置HTTPS

一、公钥和私钥的获取 可以购买,可以自己生成,本文假设你已经有了公钥和私钥。 二、把SSL证书中的公钥和私钥放到服务器中的Nginx中 找到你需要配合HTTPS的服务器中的Nginx安装目录,把公钥...

小怪聊职场 ⋅ 05/03 ⋅ 0

CentOS 7.5 + PHP 5.6.36 + Nginx 1.14.0 配置笔记

本文首发 http://zhaoda.net/2018/05/22/centos-php-nginx/ 转载请注明出处 创建用户、组和目录 服务器基础环境和依赖安装 安装其他 PHP 依赖库 安装 PHP 安装 PHP 扩展 修改 php.ini 配置文...

sage6437 ⋅ 05/25 ⋅ 0

nginx建https站实验

简单的lnnmp传输拓扑图 Nginx1主要是对外网提供网站服务,既然是对外网的提供服务器,那么我们就要考虑问题了。外网的网络带宽有限,这里对外网的传输我们就使用压缩传输;同时我们也希望数据...

Ailu0li ⋅ 2017/01/14 ⋅ 0

怎样正确设置remote_addr和x_forwarded_for获取用户真实IP

做网站时经常会用到和这两个头信息来获取客户端的IP,然而当有反向代理或者CDN的情况下,这两个值就不够准确了,需要调整一些配置。 什么是remoteaddr remoteaddr代表客户端的IP,但它的值不...

星逝流 ⋅ 2015/11/11 ⋅ 0

Nginx系列-10.采用Nginx搭建正向代理服务

Nginx系列-10.采用Nginx搭建正向代理服务 目录 - Nginx系列 Nginx系列-1.Linux下安装Nginx Nginx系列-2.配置LNMP(Linux、Nginx、MySQL、PHP)架构 Nginx系列-3.配置Nginx虚拟主机 Nginx系列...

ngle ⋅ 06/10 ⋅ 0

轻量级接口代理网关--PGW

PGW(Proxy Gateway) Proxy Gateway基于openresty(nginx-lua-module)开发,可以作为接口网关(api gateway)使用,整合业务模块接口,微服务治理聚合,通过web配置界面,能够轻松进行代理...

小飞有点不高兴 ⋅ 2016/09/04 ⋅ 1

nginx ssl证书部署

查看当前安装的OpenSSL版本所支持的密码列表,可以使用下列命令:openssl ciphers 苹果ATS检测:https://www.qcloud.com/product/ssl 刚开始"PFS(完全正向保密)"这一项未成功通过,升级Ngi...

lysweb ⋅ 2016/12/15 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java集合类总结笔记

一、集合类的层次关系 主要容器集合类的特点: ArrayList 一种可以动态增长和缩减的索引序列 LinkedList 一种可以在任何位置进行高效地插入和删除的有序序列 ArrayDeque 一种用循环数组实现的...

edwardGe ⋅ 6分钟前 ⋅ 0

spring RMI远程调用

RMI https://www.cnblogs.com/wdh1995/p/6792407.html

BobwithB ⋅ 11分钟前 ⋅ 0

Jenkins实践2 之基本配置

1 插件管理 系统管理->插件管理 在可选插件中可以自主安装插件 2 管理用户 系统管理->管理用户->新建用户 3 安全配置 系统管理->全局安全配置 授权策略 选择安全矩阵 然后添加现有的用户,赋...

晨猫 ⋅ 11分钟前 ⋅ 0

c++智能指针

1、是一种泛型类,针对指针类型的泛型类,会保存指针 2、重载了符号 *和-> 对智能指针使用这两个符号,相当于对保存的泛型使用这两个符号 3、当智能指针引用计数为0时,会去释放指针指向的资...

国仔饼 ⋅ 13分钟前 ⋅ 0

Spring Boot错误处理机制

1)、SpringBoot默认的错误处理机制 默认效果: 1)、浏览器,返回一个默认的错误页面 浏览器发送请求的请求头: 2)、如果是其他客户端,默认响应一个json数据 原理: 可以参照ErrorMvcAut...

小致dad ⋅ 14分钟前 ⋅ 0

ftp连接不上的终极办法 SFTP

假如FTP由于各种原因就是连不上,那么用SFTP协议吧,使用登录服务器的账号密码。

sskill ⋅ 18分钟前 ⋅ 0

Unity 围绕旋转角度限制(Transform.RotateAround)

在 Unity 中可以利用 Transform.RotateAround 围绕指定物体进行旋转,但某些情况下可能需要对旋转角度进行控制。我是先计算出预设角度大小,然后判断是否在限定角度范围内是则进行旋转。 相关...

大轩 ⋅ 19分钟前 ⋅ 0

阿里沙箱环境支付宝测试demo

阿里支付宝支付和微信支付,包括:阿里沙箱环境支付宝测试demo,支付宝支付整合到spring+springmvc+mybatis环境和微信整合到如上环境,功能非常齐全,只需要修改对应的配置文件即可,帮助文档...

码代码的小司机 ⋅ 22分钟前 ⋅ 0

JDK1.6和JDK1.7中,Collections.sort的区别,

背景 最近,项目正在集成测试阶段,项目在服务器上运行了一段时间,点击表格的列进行排序的时候,有的列排序正常,有的列在排序的时候,在后台会抛出如下异常,查询到不到数据,而且在另外一...

tsmyk0715 ⋅ 39分钟前 ⋅ 0

C++ 中命名空间的 5 个常见用法

相信小伙伴们对C++已经非常熟悉,但是对命名空间经常使用到的地方还不是很明白,这篇文章就针对命名空间这一块做了一个叙述。 命名空间在1995年被引入到 c++ 标准中,通常是这样定义的: 命名...

柳猫 ⋅ 43分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部