上一篇博文给大家介绍了Nginx的安装与运行:

  • Nginx:Nginx安装与运行

今天博主给大家分享如何给Nginx添加SSL,实现HTTPS访问Nginx服务,但前提条件是你的服务器有SSL,博主是阿里云的服务器,可以免费申请SSL,其他云服务器平台应该也是如此。

如果你没有安装Nginx,跟着博主一起动手即可(基本上博主的所有步骤都要进行操作,少数不需要操作的,博主会进行提示)。

如果之前已经安装好了,也不需要担心,步骤其实都是差不多的,以下几步需要注意,博主在操作之前也会进行提示:

  • 确保安装了openssl
  • 补全nginx文件夹下面的文件夹和文件(不然可能没有configure文件,就不能重新配置了)。
  • 重新配置、编译(所谓重新,就是你之前安装Nginx,其实已经配置和编译过了,只不过默认配置没有添加SSL,如果你需要添加SSL,则需要修改默认配置,即重新配置,再重新编译即可),但不需要重新安装,不然会覆盖原有nginx文件夹下的所有文件。
  • 将重新编译生成的nginx可执行文件替代掉原来的nginx可执行文件(可以备份一下原来的nginx可执行文件,避免出现问题)。
  • 将SSL证书添加到nginx文件夹下。
  • 修改Nginx配置文件,再启动或者重启Nginx服务即可。

安装依赖环境

安装gcc环境

yum install -y gcc-c++

安装prce库

yum install -y pcre pcre-devel

安装压缩和解压缩依赖

yum install -y zlib zlib-devel

安装openssl

yum install -y openssl openssl-devel

下载Nginx

Nginx下载地址:

  • Nginx

下载稳定版(Linux系统)。
下载好后,使用Xftp将该压缩文件放到虚拟机或服务器中。

解压Nginx

[root@izoq008ryseuupz ~]# cd /usr/local/
[root@izoq008ryseuupz local]# ll
total 1068
drwxr-xr-x   7 kaven root    4096 Jan  4 06:05 aegis
drwxr-xr-x.  2 kaven root    4096 Apr 11  2018 bin
drwxr-xr-x  10 kaven root    4096 Jan  3 15:01 cloudmonitor
drwxr-xr-x.  2 kaven root    4096 Apr 11  2018 etc
drwxr-xr-x.  2 kaven root    4096 Apr 11  2018 games
drwxr-xr-x.  2 kaven root    4096 Apr 11  2018 include
drwxr-xr-x   7 kaven  143    4096 Oct  5  2019 jdk1.8.0_231
drwxr-xr-x.  2 kaven root    4096 Apr 11  2018 lib
drwxr-xr-x.  2 kaven root    4096 Apr 11  2018 lib64
drwxr-xr-x.  2 kaven root    4096 Apr 11  2018 libexec
-rw-r--r--   1 root  root 1039530 Jan  8 16:46 nginx-1.18.0.tar.gz
drwxr-xr-x.  2 kaven root    4096 Apr 11  2018 sbin
drwxr-xr-x.  7 kaven root    4096 Jul 24 11:01 share
drwxr-xr-x.  2 kaven root    4096 Apr 11  2018 src
[root@izoq008ryseuupz local]# tar -zxvf nginx-1.18.0.tar.gz

如果大家之前安装过Nginx,现在开始,就需要跟着博主一起操作了。

[root@izoq008ryseuupz local]# cd nginx-1.18.0
[root@izoq008ryseuupz nginx-1.18.0]# ll
total 784
drwxr-xr-x 6 kaven kaven   4096 Jan  8 18:56 auto
-rw-r--r-- 1 kaven kaven 302863 Apr 21  2020 CHANGES
-rw-r--r-- 1 kaven kaven 462213 Apr 21  2020 CHANGES.ru
drwxr-xr-x 2 kaven kaven   4096 Jan  8 18:56 conf
-rwxr-xr-x 1 kaven kaven   2502 Apr 21  2020 configure
drwxr-xr-x 4 kaven kaven   4096 Jan  8 18:56 contrib
drwxr-xr-x 2 kaven kaven   4096 Jan  8 18:56 html
-rw-r--r-- 1 kaven kaven   1397 Apr 21  2020 LICENSE
drwxr-xr-x 2 kaven kaven   4096 Jan  8 18:56 man
-rw-r--r-- 1 kaven kaven     49 Apr 21  2020 README
drwxr-xr-x 9 kaven kaven   4096 Jan  8 18:56 src

如果你之前已经安装过Nginx,并且上面这些文件夹或者文件都有,就不需要管,如果有些文件夹或者文件没有,比如没有configure文件,就需要去官网下载同版本的Nginx,将缺少的文件夹和文件补齐(各个版本的Nginx的文件结构可能不一样,大家只要和官网下载的同版本Nginx的文件结构一样即可)。

编译Nginx

先进行配置,--with-http_ssl_module这个配置就是为了给Nginx添加SSL。

[root@izoq008ryseuupz nginx-1.18.0]# ./configure --with-http_ssl_module
checking for OS+ Linux 3.10.0-1062.18.1.el7.x86_64 x86_64
checking for C compiler ... found+ using GNU C compiler+ gcc version: 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC)
...
Configuration summary+ using system PCRE library+ using system OpenSSL library+ using system zlib librarynginx path prefix: "/usr/local/nginx"nginx binary file: "/usr/local/nginx/sbin/nginx"nginx modules path: "/usr/local/nginx/modules"nginx configuration prefix: "/usr/local/nginx/conf"nginx configuration file: "/usr/local/nginx/conf/nginx.conf"nginx pid file: "/usr/local/nginx/logs/nginx.pid"nginx error log file: "/usr/local/nginx/logs/error.log"nginx http access log file: "/usr/local/nginx/logs/access.log"nginx http client request body temporary files: "client_body_temp"nginx http proxy temporary files: "proxy_temp"nginx http fastcgi temporary files: "fastcgi_temp"nginx http uwsgi temporary files: "uwsgi_temp"nginx http scgi temporary files: "scgi_temp"

配置的目的是为了创建Makefile文件,为后面的编译阶段提供编译文件。

[root@izoq008ryseuupz nginx-1.18.0]# ll
总用量 768
drwxr-xr-x. 6 1001 1001   4096 1月   7 16:24 auto
-rw-r--r--. 1 1001 1001 302863 4月  21 2020 CHANGES
-rw-r--r--. 1 1001 1001 462213 4月  21 2020 CHANGES.ru
drwxr-xr-x. 2 1001 1001    168 1月   7 16:24 conf
-rwxr-xr-x. 1 1001 1001   2502 4月  21 2020 configure
drwxr-xr-x. 4 1001 1001     72 1月   7 16:24 contrib
drwxr-xr-x. 2 1001 1001     40 1月   7 16:24 html
-rw-r--r--. 1 1001 1001   1397 4月  21 2020 LICENSE
-rw-r--r--. 1 root root    376 1月   7 16:37 Makefile
drwxr-xr-x. 2 1001 1001     21 1月   7 16:24 man
drwxr-xr-x. 3 root root    174 1月   7 16:41 objs
-rw-r--r--. 1 1001 1001     49 4月  21 2020 README
drwxr-xr-x. 9 1001 1001     91 1月   7 16:24 src

编译

[root@izoq008ryseuupz nginx-1.18.0]# make

之前安装过Nginx,不需要接下来的安装操作,不然会覆盖原来的Nginx,但需要下面两步来代替(之前没有安装过Nginx就不需要这两个步骤):

  • 备份原有的nginx
[root@izoq008ryseuupz nginx-1.18.0]# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
  • 然后将刚刚编译好的nginx(在objs文件夹下)覆盖掉原有的nginx(这个时候nginx要是停止状态)。
[root@izoq008ryseuupz nginx-1.18.0]# cp ./objs/nginx /usr/local/nginx/sbin/
cp: overwrite ‘/usr/local/nginx/sbin/nginx’? y

安装

[root@izoq008ryseuupz nginx-1.18.0]# make install

安装之后,就会有nginx文件夹。

[root@izoq008ryseuupz nginx-1.18.0]# cd ..
[root@izoq008ryseuupz local]# ll
total 1076
drwxr-xr-x   7 kaven root     4096 Jan  4 06:05 aegis
drwxr-xr-x.  2 kaven root     4096 Apr 11  2018 bin
drwxr-xr-x  10 kaven root     4096 Jan  3 15:01 cloudmonitor
drwxr-xr-x.  2 kaven root     4096 Apr 11  2018 etc
drwxr-xr-x.  2 kaven root     4096 Apr 11  2018 games
drwxr-xr-x.  2 kaven root     4096 Apr 11  2018 include
drwxr-xr-x   7 kaven   143    4096 Oct  5  2019 jdk1.8.0_231
drwxr-xr-x.  2 kaven root     4096 Apr 11  2018 lib
drwxr-xr-x.  2 kaven root     4096 Apr 11  2018 lib64
drwxr-xr-x.  2 kaven root     4096 Apr 11  2018 libexec
drwxr-xr-x   6 root  root     4096 Jan  8 17:33 nginx
drwxr-xr-x  10 kaven kaven    4096 Jan  8 17:29 nginx-1.18.0
-rw-r--r--   1 root  root  1039530 Jan  8 16:46 nginx-1.18.0.tar.gz
drwxr-xr-x.  2 kaven root     4096 Apr 11  2018 sbin
drwxr-xr-x.  7 kaven root     4096 Jul 24 11:01 share
drwxr-xr-x.  2 kaven root     4096 Apr 11  2018 src

添加SSL

下载SSL证书。

这里下载Nginx版的SSL证书。

创建ssl文件夹。

[root@izoq008ryseuupz local]# cd nginx
[root@izoq008ryseuupz nginx]# ll
total 36
drwx------ 2 nobody root 4096 Jan  8 18:43 client_body_temp
drwxr-xr-x 2 root   root 4096 Jan  8 18:46 conf
drwx------ 2 nobody root 4096 Jan  8 18:43 fastcgi_temp
drwxr-xr-x 2 root   root 4096 Jan  8 17:33 html
drwxr-xr-x 2 root   root 4096 Jan  8 18:43 logs
drwx------ 2 nobody root 4096 Jan  8 18:43 proxy_temp
drwxr-xr-x 2 root   root 4096 Jan  8 17:54 sbin
drwx------ 2 nobody root 4096 Jan  8 18:43 scgi_temp
drwx------ 2 nobody root 4096 Jan  8 18:43 uwsgi_temp
[root@izoq008ryseuupz nginx]# mkdir ssl
[root@izoq008ryseuupz nginx]# ll
total 40
drwx------ 2 nobody root 4096 Jan  8 18:43 client_body_temp
drwxr-xr-x 2 root   root 4096 Jan  8 18:46 conf
drwx------ 2 nobody root 4096 Jan  8 18:43 fastcgi_temp
drwxr-xr-x 2 root   root 4096 Jan  8 17:33 html
drwxr-xr-x 2 root   root 4096 Jan  8 18:43 logs
drwx------ 2 nobody root 4096 Jan  8 18:43 proxy_temp
drwxr-xr-x 2 root   root 4096 Jan  8 17:54 sbin
drwx------ 2 nobody root 4096 Jan  8 18:43 scgi_temp
drwxr-xr-x 2 root   root 4096 Jan  8 18:41 ssl
drwx------ 2 nobody root 4096 Jan  8 18:43 uwsgi_temp

将刚刚下载好的Nginx版SSL证书放到ssl文件夹下。

修改配置文件

[root@izoq008ryseuupz nginx]# cd conf
[root@izoq008ryseuupz conf]# ll
total 68
-rw-r--r-- 1 root root 1077 Jan  8 17:33 fastcgi.conf
-rw-r--r-- 1 root root 1077 Jan  8 17:33 fastcgi.conf.default
-rw-r--r-- 1 root root 1007 Jan  8 17:33 fastcgi_params
-rw-r--r-- 1 root root 1007 Jan  8 17:33 fastcgi_params.default
-rw-r--r-- 1 root root 2837 Jan  8 17:33 koi-utf
-rw-r--r-- 1 root root 2223 Jan  8 17:33 koi-win
-rw-r--r-- 1 root root 5231 Jan  8 17:33 mime.types
-rw-r--r-- 1 root root 5231 Jan  8 17:33 mime.types.default
-rw-r--r-- 1 root root 2656 Jan  8 17:33 nginx.conf
-rw-r--r-- 1 root root 2656 Jan  8 17:33 nginx.conf.default
-rw-r--r-- 1 root root  636 Jan  8 17:33 scgi_params
-rw-r--r-- 1 root root  636 Jan  8 17:33 scgi_params.default
-rw-r--r-- 1 root root  664 Jan  8 17:33 uwsgi_params
-rw-r--r-- 1 root root  664 Jan  8 17:33 uwsgi_params.default
-rw-r--r-- 1 root root 3610 Jan  8 17:33 win-utf
[root@izoq008ryseuupz conf]# vim nginx.conf

在配置文件中添加一个server,就是监听443端口。443端口主要是用于HTTPS服务,HTTPS是提供加密和通过安全端口传输的另一种HTTP。

server {listen 443 ssl;#配置HTTPS的默认访问端口443。#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。#如果你使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。server_name yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。root html;index index.html index.htm;ssl_certificate cert/cert-file-name.pem;  #需要将cert-file-name.pem替换成已上传的证书文件的名称。ssl_certificate_key cert/cert-file-name.key; #需要将cert-file-name.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; #表示使用的TLS协议的类型。ssl_prefer_server_ciphers on;location / {root html;  #站点目录。index index.html index.htm;}
}

换成自己的域名和SSL证书即可。

启动Nginx

[root@izoq008ryseuupz conf]# cd ..
[root@izoq008ryseuupz nginx]# cd sbin
[root@izoq008ryseuupz sbin]# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost sbin]# ./nginx
./nginx               启动nginx。
./nginx -t            检查nginx的配置文件是否符合要求
./nginx -s stop       此方式相当于先查出nginx进程id,再使用kill命令强制杀掉进程。
./nginx -s quit       此方式是待nginx进程处理完任务后,再停止nginx。
./nginx -s reload     重启nginx。

现在就可以使用HTTPS来访问Nginx服务了。

使用HTTP访问Nginx服务会提示不安全。

Nginx添加SSL实现HTTPS访问就介绍到这里。

写博客是博主记录自己的学习过程,如果有错误,请指正,谢谢!

Nginx:Nginx添加SSL实现HTTPS访问相关推荐

  1. Windows(二):windows+nginx+openssl本地搭建nginx并配置ssl实现https访问

    准备 下载OpenSSL (安装到自己喜欢的目录 - 安装过程中可能会让你安装 VC_redist.x64.exe 这个程序) https://slproweb.com/products/Win32O ...

  2. nginx配置ssl实现https访问 亲测有效

    nginx配置ssl实现https访问 亲测有效 申请证书 运行用户,默认即是nginx,可以不进行设置 停止nginx 启动 nginx日常操作命令 申请证书 在这里,我直接申请腾讯云的免费证书.这 ...

  3. 在不禁用iis的情况下停止其对443端口的禁用(由于443端口被占用宝塔nginx服务器添加ssl证书失败,又不能停止iis服务的解决办法)

    在不禁用iis的情况下停止其对443端口的禁用(由于443端口被占用宝塔nginx服务器添加ssl证书失败,又不能停止iis服务的解决办法) 1.修改文件 2.重启服务器或iis服务 3.补充 (扩展 ...

  4. nginx简单创建ssl配置https,实现https静态访问图片和页面

    最重要的两点:1.配置nginx开放端口80和443 2.找到nginx对应的文件地址(默认地址为/usr/local/nginx) 1.通过openssl生成rsa非对称密钥 创建一个文件夹,推荐在 ...

  5. Nginx配置域名转发及https访问

    1.概述 当在一个服务器部署多个服务,不同服务需要通过不同域名访问时,可以通过Nginx代理进行域名转发,同时还可以通过配置SSL模块实现https访问. 本文示例的业务需求为: 在一个服务器同时部署 ...

  6. 阿里云Ubuntu 14.04 + Nginx + let's encrypt 搭建https访问

    用云旺的做IM,ios端图片地址只能是https的才能显示,所以为服务器增加证书 Let's Encrypt是一个免费并且开源的CA,且已经获得Mozilla.微软等主要浏览器厂商的根授信 1. 下载 ...

  7. 给WordPress添加SSL认证(HTTPS)

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议.TLS与 ...

  8. 群晖导入SSL证书HTTPS访问

    一.申请证书 现在免费的SSL证书服务有很多,由于我的域名是阿里云,所以用的是阿里的免费SSL证书. 阿里云SSL证书申请:https://yundun.console.aliyun.com/ 申请证 ...

  9. centos php ssl,CentOS下在Nginx中添加SSL证书以支持HTTPS协议访问

    1,上传证书文件至服务器,如 /usr/local/nginx/ssl 目录下 2,修改nginx的配置文件,若是虚拟站点,刚需要修改对应的配置文件,修改内容如下: #基本的SSL配置 server ...

最新文章

  1. 【linux】shell中浮点数运算的加、减、乘、除
  2. DWS和各异构数据库的差异对比
  3. MPLS 第一话 :传统IP路由的局限性
  4. PXA270-基于ARM9内核Processor外部NAND FLASH的控制实现
  5. 四十五、和我一起看看,国外的Python考试到底是怎么样(上篇)
  6. python学习笔记 --- 随机数进阶
  7. 光端机和收发器的区别有哪些?
  8. 两步路轨迹文件位置_最新Uber ATG的轨迹预测方法LiRaNet介绍
  9. synchronized锁升级_synchronized详解以及锁的膨胀升级过程
  10. dockerfile用yum安装mysql服务
  11. C++基础——对函数模板的类型推导的补充
  12. SRM 207 Div II Level Two: RegularSeason,字符串操作(sstream),多关键字排序(操作符重载)...
  13. OpenGL超级宝典(第7版)笔记15 前三章实例 下个五子棋全代码 (附)
  14. 原生js的dom操作
  15. preference android:layout,自定义PreferenceScreen的布局
  16. DELL VENUE 11 7130解锁功耗墙总结
  17. 登高,A股想过重阳节,但是令人遗憾的是,遍插茱萸少一人啊
  18. Unity2018发布webgl视频无法播放
  19. 转: 给大家提供3款LOGO制作软件
  20. 【word】设置背景为绿豆沙保护色

热门文章

  1. typename typedef
  2. 2多线程之龟兔赛跑案例
  3. mac android usb驱动 win10,如何从Mac OS X创建Windows 10安装程序USB驱动器 | MOS86
  4. jpg与png图片的优缺点
  5. 传世基本架构-服务器端(LoginSvr服务器分析)
  6. Kafka 详细配置
  7. Java 23 种设计模式精讲
  8. XidianOJ 1081 锘爷与矩阵
  9. 总结大佬经验,如何学习STM32?(入门、进阶)
  10. MyEclipse10 + Axis2 开发webservice