当前位置: 首页 > news >正文

Nginx配置HTTPS

一、Nginx配置HTTP

在服务器端,用Nginx配置一个静态文件很容易,只需要在nginx.conf文件中加上:

server {
    listen ip:80;
    server_name XX.XX.com;
    server_name_in_redirect off;
    charset UTF-8;

    location / {
        root /data/apache_htdocs/apply/;
        index index.html index.htm;
        expires 1d;
    }
}

二、获取HTTPS证书

1.生成密钥key(server.key)

$ openssl genrsa -des3 -out server.key 2048

以上命令会生成一个server.key文件

使用以下命令可以跳过输入密码的步骤:

$ openssl rsa -in server.key -out server.key

2.创建服务器证书的申请文件(server.csr)

$ openssl req -new -key server.key -out server.csr

其中Country Name填CN,Common Name填主机名(https://XX.XX.com/...,这里的主机名为XX.XX.com),其他都可不填。

3.创建CA证书(ca.crt/ca.srl)

$ openssl req -new -x509 -key server.key -out ca.crt -days 3650

这个证书用来给自己的服务器证书签名

4.创建服务器证书(server.crt)

$ openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt

经过以上步骤,一共生成了5个文件:

ca.crt ca.srl server.crt server.csr server.key

其中server.crt和server.key就是Nginx需要的证书文件

三、配置Nginx

Nignx配置文件nginx.conf中加入:

server {
    listen       ip:443 ssl;
    server_name  XX.XX.com;

    ssl_certificate      /data/XX/keys/server.crt;
    ssl_certificate_key  /data/XX/keys/server.key;

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

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

    location / {
        root   /data/apache_htdocs/admin/;
        index  index.html index.htm;
        expires 1d;
    }
}

配置好之后运行 nginx -t 检查配置是否有语法错误

没问题的话运行 nginx -s reload 重新加载配置文件

运行 netstat -lntp 可以查看新增了一个443端口的nginx服务:

tcp        0      0 ip:443            0.0.0.0:*                   LISTEN      pid/nginx

 四、遇到的问题及解决方案

1.问题一:缺少ngx_http_ssl_module模块

nginx -t 时报错如下:

nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module

解决方案:

利用Nginx源码编译一个带ngx_http_ssl_module模块的nginx,替换掉现有的nginx,具体步骤如下

(1)查看现在的nginx编译参数

$ /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.8.0
built by gcc 4.4.6 20110731 (Red Hat 4.4.6-4) (GCC)
built with OpenSSL 1.0.1m 19 Mar 2015
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-pcre=/usr/local/pcre-8.10

(2)利用源码重新编译nginx

$ cd /usr/local/nginx-1.8.0
$ ./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/pcre-8.10 --with-http_ssl_module

其中--with-http_ssl_module是新加的参数

配置完运行make进行编译,注意不需要运行make install命令

(3)将新编译生成的nginx替换现有的nginx

覆盖之前先备份现有的nginx:

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

停止nginx服务:

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

替换现有的nginx:

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

启动nginx:

$ /usr/local/nginx/sbin/nginx

 

2.问题二:缺少OPENSSL或PCRE模块

./configure或make Nginx时报错:

./configure: error: the HTTP rewrite module requires the PCRE library.

解决方案:

源码安装openssl和pcre

源码下载地址

openssl: https://www.openssl.org/(直接下载:https://www.openssl.org/source/openssl-1.1.1.tar.gz)

pcre: https://www.pcre.org/(直接下载:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/)

源码安装:

(1)解压

$ tar zxvf pcre-8.42.tar.gz
$ cd pcre-8.42

(2)配置

$ ./configure --prefix=/usr/local/pcre

(3)编译

$ make

(4)安装

$ make install

编译和安装可以合成一步:make && make install

openssl的安装同理

 

转载于:https://www.cnblogs.com/kagol/p/9634948.html

相关文章:

  • 正则表达式 整理
  • 分布式版本控制系统Git的安装与使用
  • 【BZOJ 4551】【TJOI2016】【HEOI2016】树
  • oracle多表查询-自连接
  • swiper 点击切换,拖动切换后继续自动轮播
  • Python 之 文件操作
  • Java 8 方法引用
  • Docker-基本命令
  • jenkins发送html测试报告
  • 项目配置 xml文件时 报错提示(The reference to entity useSSL must end with the ';' delimiter.)...
  • Golang操作结构体、Map转化为JSON
  • 犯得错误QAQ
  • Python基础装饰器的基本原理
  • 在vue中使用animate.css
  • 集中绕组和分布绕组
  • 345-反转字符串中的元音字母
  • angular2开源库收集
  • CentOS从零开始部署Nodejs项目
  • python大佬养成计划----difflib模块
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Vue小说阅读器(仿追书神器)
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前嗅ForeSpider采集配置界面介绍
  • 数据仓库的几种建模方法
  • 说说动画卡顿的解决方案
  • 我的zsh配置, 2019最新方案
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 湖北分布式智能数据采集方法有哪些?
  • 扩展资源服务器解决oauth2 性能瓶颈
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • # C++之functional库用法整理
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (论文阅读11/100)Fast R-CNN
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • ./configure、make、make install 命令
  • .axf 转化 .bin文件 的方法
  • .NET CLR Hosting 简介
  • .NET 分布式技术比较
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .net生成的类,跨工程调用显示注释
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • ??在JSP中,java和JavaScript如何交互?
  • @JoinTable会自动删除关联表的数据
  • @WebService和@WebMethod注解的用法
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [20190401]关于semtimedop函数调用.txt
  • [AX]AX2012 R2 出差申请和支出报告
  • [BT]BUUCTF刷题第9天(3.27)
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [cocos creator]EditBox,editing-return事件,清空输入框