资讯专栏INFORMATION COLUMN

从零开始配置 Nginx + HTTPS

J4ck_Chan / 3315人阅读

摘要:是一款轻量级的服务器反向代理服务器及电子邮件代理服务器,并在一个协议下发行。表明它使用了,但存在不同于的默认端口及一个加密身份验证层在与之间。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

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:体系。用于安全的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.2

wget 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 /home
mkdir wwwroot
cd wwwroot
mkdir www.onlyling.com

## 把站点程序放到 `www.onlyling.com` 文件夹
## 程序启动占用 3000 端口好
## 静态资源目录 /home/wwwroot/www.onlyling.com/app/public

## 修改 nginx.conf ,一般情况使用软连的方式,但还是不太懂,直接修改默认的配置
cd /usr/local/nginx/conf
vi 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/conf
vi 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 能否自动更新,毕竟没有按照它的步骤走下去

原文阅读:从零开始配置 Nginx + HTTPS

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39731.html

相关文章

  • 从零部署一个https网站

    摘要:然后在服务器上拉取上的代码个人觉得这种方法不是很好,可以考虑自己在服务器上搭建一个的中央仓库,可以看看我之前的这篇文章如何在上搭建一个中央仓库站点部署将站点升级为协议,其实就是修改下的一些配置。 相信很多同学都对部署网站很感兴趣,今天给大家介绍一个楼主看过的很棒的视频,一共有八集,从零开始使用nginx部署一个https网站,非常良心的一款视频,视频地址:https://www.lar...

    马龙驹 评论0 收藏0
  • 从零开始上线一个网站应用

    摘要:欢迎大家访问我的个人博客作为的第一篇文章,本文将介绍上线的全流程,希望可以对想知道如何上线一款网站应用的朋友有点帮助。 欢迎大家访问我的个人博客:http://www.coderstudy.info 作为CoderStudy的第一篇文章,本文将介绍CoderStudy上线的全流程,希望可以对想知道如何上线一款网站应用的朋友有点帮助。 一、购买服务器 云服务器的提供商有很多,阿里、腾讯等...

    gggggggbong 评论0 收藏0
  • 从零开始在ubuntu上搭建node开发环境

    摘要:安装配置信息配置环境安装包安装安装注安装之后如果不可以用,根据提示配置一下环境变量反向代理安装配置验证配置信息重启 创建用户 (1) adduser username (2) 授权 gpasswd -a txwg sudo 配置 sudo visudo (找到root ALL=(ALL:ALL) ALL 在下面添加 username ALL=(ALL:ALL) ALL) 增强服务器...

    isLishude 评论0 收藏0
  • 从零开始在ubuntu上搭建node开发环境

    摘要:安装配置信息配置环境安装包安装安装注安装之后如果不可以用,根据提示配置一下环境变量反向代理安装配置验证配置信息重启 创建用户 (1) adduser username (2) 授权 gpasswd -a txwg sudo 配置 sudo visudo (找到root ALL=(ALL:ALL) ALL 在下面添加 username ALL=(ALL:ALL) ALL) 增强服务器...

    cucumber 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<