博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从零开始配置 Nginx + HTTPS
阅读量:6174 次
发布时间:2019-06-21

本文共 3950 字,大约阅读时间需要 13 分钟。

Nginx

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

HTTPS

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

安装 Nginx

## 准备基本的东西yum install gcc-c++yum -y install pcre*yum -y install openssl*## 把下载文件、站点数据都放到 home 文件夹里面## 先下载 Nginx,目前最新稳定版本是1.12.2wget http://nginx.org/download/nginx-1.12.2.tar.gz## 解压压缩包tar -zxvf nginx-1.12.2.tar.gz## 进入文件夹,准备安装cd nginx-1.12.2## 设置安装目录为 /usr/local/nginx## 因为要使用ssl 所以需要以下额外的模块./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module## 如果没有报错,开始编译安装make## make 这步可能会报错## ./configure: error: SSL modules require the OpenSSL library.## 再安装一些东西## yum -y install openssl openssl-devel## 安装make install## 启动nginx服务cd /usr/local/nginx/sbin./nginx## 先搞一个简单的服务吧## 在 home 文件夹下面搞cd /homemkdir wwwrootcd wwwrootmkdir www.onlyling.com## 把站点程序放到 `www.onlyling.com` 文件夹## 程序启动占用 3000 端口好## 静态资源目录 /home/wwwroot/www.onlyling.com/app/public## 修改 nginx.conf ,一般情况使用软连的方式,但还是不太懂,直接修改默认的配置cd /usr/local/nginx/confvi nginx.conf## 简单的配置一个 http 服务## 参考了 Thinkjs 线上部署使用 Nginx 的代码## https://thinkjs.org/zh-cn/doc/3.0/deploy.html server {    listen       80;    server_name  www.onlyling.com;    root /home/wwwroot/www.onlyling.com/app/public;        set $node_port 3000;    location / {        proxy_http_version 1.1;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_set_header Host $http_host;        proxy_set_header X-NginX-Proxy true;        proxy_set_header Upgrade $http_upgrade;        proxy_set_header Connection "upgrade";        proxy_pass http://127.0.0.1:$node_port$request_uri;        proxy_redirect off;        root   html;        index  index.html index.htm;    }}## 保存好后重启## 没有配置别名,嗯,有点长/usr/local/nginx/sbin/nginx -s reload## www.onlyling.com 解析到服务器,应该就可以访问这个站点了

HTTPS 证书

这次证书是自己搞的,用的是 acme.sh ,可以实现每60天自动更新一次证书,很棒哦。

## 按照文档提示安装## 安装的时候会提示安装另一个服务器程序,我们用 Nginx 了,所以不需要curl  https://get.acme.sh | sh## 验证身份、生成证书## 验证身份其实就是在站点生成一个文件,通过域名访问文件,有就通过## 所以后面的目录指定到了站点的静态资源文件(反正我的程序里就把 public 设置成根目录)acme.sh  --issue  -d www.onlyling --webroot  /home/wwwroot/www.onlyling.com/app/public## 等待一分钟左右吧## 生成了蛮多的文件## 复制证书## 可能会提示没有文件夹,手动按目录创建## 但是最后一步,我没有执行成功,就手动配置了## 证书已经复制到了 /etc/nginx/ssl 文件夹acme.sh  --installcert  -d  
.com \ --key-file /etc/nginx/ssl/
.key \ --fullchain-file /etc/nginx/ssl/fullchain.cer \ --reloadcmd "service nginx force-reload"

手动配置 Nginx + HTTPS

cd /usr/local/nginx/confvi nginx.conf## 在刚刚配置 http 那里添加一个 https 服务server {    listen 443 ssl;    server_name www.onlyling.com;    root /home/wwwroot/www.onlyling.com/app/public;    set $node_port 3000;    ssl_certificate /etc/nginx/ssl/fullchain.cer;    ssl_certificate_key /etc/nginx/ssl/www.onlyling.com.key;    keepalive_timeout   70;    fastcgi_param   HTTPS               on;    fastcgi_param   HTTP_SCHEME         https;    server_tokens off;    location / {        proxy_http_version 1.1;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_set_header Host $http_host;        proxy_set_header X-NginX-Proxy true;        proxy_set_header Upgrade $http_upgrade;        proxy_set_header Connection "upgrade";        proxy_pass http://127.0.0.1:$node_port$request_uri;        proxy_redirect off;        root   html;        index  index.html index.htm;    }}## 如果只想开启 https## 在 http 配置处添加## rewrite ^ https://$http_host$request_uri? permanent;## 重启 Nginx 服务## 大概、应该、可能就搞定了## 唯一不确定的是 acme.sh 能否自动更新,毕竟没有按照它的步骤走下去

原文阅读:

转载地址:http://noqba.baihongyu.com/

你可能感兴趣的文章
oracle resetlogs和noresetlogs 创建控制文件区别
查看>>
2013-7-17学习作业练习
查看>>
ZAM 3D入门教程(4):Extrusion编辑器
查看>>
《深入实践Spring Boot》一第2章 在Spring Boot中使用数据库2.1 使用MySQL
查看>>
C++语言基础 例程 字符串类
查看>>
堆排序
查看>>
Java的热部署(后期完善)
查看>>
css总结
查看>>
Python学习笔记之六:在VS中调用Python
查看>>
node.js获取参数的常用方法
查看>>
jquery 的 change() 方法的使用
查看>>
本地计算机上的XXX服务启动后又停止了
查看>>
<s:iterator>标签迭代数据不显示
查看>>
判断 SQLServer 触发器类型,支持多行
查看>>
SQL表连接查询(inner join、full join、left join、right join)
查看>>
阿里云OTS(开放结构化数据服务)可视化管理工具的设计和功能介绍
查看>>
Github创建分支
查看>>
转换PHP脚本成为windows的执行程序
查看>>
Python组织文件 实践:将带有美国风格日期的文件改名为欧洲风格日期
查看>>
实现iOS7上tableView的切割线像iOS6中的效果
查看>>