文档章节

nginx--配置https服务器

JasonSE
 JasonSE
发布于 2016/10/04 10:06
字数 1193
阅读 6657
收藏 499

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
博文 55
码字总数 15572
作品 0
朝阳
程序员
加载中

评论(2)

苦苦学习的渣渣
苦苦学习的渣渣
Mark
啦啦啦拉拉
啦啦啦拉拉
腾讯云可以免费申请 SSL 签证
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
06/28
0
0
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
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
0
Nginx服务器证书部署-亚洲诚信

Nginx服务器证书部署 发布时间:2018-01-17 16:15:25 依赖建议 l SSL卸载驱动。建议:openssl版本1.1.0f+。 l nginx版本Stable version:最新稳定版,生产环境上建议使用的版本。 获取证书 ...

sandshell
08/10
0
0
在Linux Nginx配置HTTPS

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

小怪聊职场
05/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周日乱弹 —— 种族不同,禁止交往

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《苏菲小姐》- 鱼果 《苏菲小姐》- 鱼果 手机党少年们想听歌,请使劲儿戳(这里) @貓夏:下大雨 正是睡觉的好时候 临睡前...

小小编辑
32分钟前
32
5
Python 搭建简单服务器

Python动态服务器网页(需要使用WSGI接口),基本实现步骤如下: 1.等待客户端的链接,服务器会收到一个http协议的请求数据报 2.利用正则表达式对这个请求数据报进行解析(请求方式、提取出文...

代码打碟手
35分钟前
0
0
Confluence 6 删除垃圾内容

属性(profile)垃圾 属性垃圾的定义为,一个垃圾用户在 Confluence 创建了用户,但是这个用户在自己的属性页面中添加了垃圾 URL。 如果你有很多垃圾用户在你的系统中创建了属性,你可以使用...

honeymose
今天
0
0
qduoj~前端~二次开发~打包docker镜像并上传到阿里云容器镜像仓库

上一篇文章https://my.oschina.net/finchxu/blog/1930017记录了怎么在本地修改前端,现在我要把我的修改添加到部署到本地的前端的docker容器中,然后打包这个容器成为一个本地镜像,然后把这...

虚拟世界的懒猫
今天
1
0
UML中 的各种符号含义

Class Notation A class notation consists of three parts: Class Name The name of the class appears in the first partition. Class Attributes Attributes are shown in the second par......

hutaishi
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部