LNMP HTTPS 配置

一.http 与 https 区别

http简单的说是一种发布和接受html的方法、

以明文方式发送数据内容,不提供任何加密,数据很容易看懂,所以http不适合传输一些敏感的信息,如卡号,身份证号,密码等信息
https 是一种通过计算机网络进行安全通讯的传输协议,https经由http传输,但是利用SSL/TLS来加密数据包,以提供对网站服务器的身份认证,保护交换数据的完整性与私密性
https 默认工作在TCP协议的443端口,他的工作流程一般如下:

1.TCP 三次同步握手

2.客户端验证服务器数字证书

3.DH算法协商对称加密算法的密钥,hash算法的密钥

4.SSL安全加密隧道协商完成

5.网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性

协商的hash 算法保证数据的完成性,保证数据不被篡改

二.申请免费的SSL证书

三.在nginx中配置反向代理及证书

创建 /etc/nginx/cert 文件夹, 把上面申请的 key 和 pem 两个文件放入其中.
 

sudo mkdir /etc/nginx/cert
sudo mv 123456_hahaha.jarvis73.com.key /etc/nginx/cert
sudo mv 123456_hahaha.jarvis73.com.pem /etc/nginx/cert

现在创建一个反向代理服务的配置. 在 /etc/nginx/sites-available 文件夹下新建一个空白文件 chatgpt, 写入以下配置 (注意修改带 TODO 的部分为你自己的配置):
 

server {
    # 监听端口号为 80 (http)
    listen 80;

    # TODO: 改为你自己的域名
    server_name hahaha.jarvis73.com;

    # 关闭服务器响应头中的“Server”信息。默认情况下,nginx 会在响应头中
    # 添加“Server”信息,包含服务器软件的名称和版本号。关闭这个选项可以
    # 增加服务器的安全性,因为攻击者可能会利用这些信息来针对特定版本的
    # 服务器软件进行攻击。
    server_tokens off;

    # 80 端口强制重定向到 https
    return 301 https://$server_name$request_uri;
}

# https 端口 443
server {
    # 监听端口号为443,启用SSL加密,并开启 HTTP/2 协议支持 
    listen 443 ssl http2;

    # TODO: 改为你自己的域名
    server_name hahaha.jarvis73.com;

    # ============================================================
    # 下面一段用于配置 SSL 证书
    # ============================================================

    # TODO: *.pem 和 *.key 修改为前面申请证书的实际文件名
    ssl_certificate /etc/nginx/cert/hahaha.jarvis73.com.pem;
    ssl_certificate_key /etc/nginx/cert/hahaha.jarvis73.com.key;

    # TODO: 自定义当前 nginx 服务日志的文件名
    access_log /var/log/nginx/chatgpt-access.log;
    error_log /var/log/nginx/chatgpt-error.log;

    server_tokens off;

    # ============================================================
    # 以下部分是反向代理的设置, 具体配置方式取决于所使用的服务.
    # 特别需要注意 location 和 proxy_pass 匹配的写法, 这里不再
    # 展开, 请自行上网搜索.
    # ============================================================

    # 关闭代理的缓存. 可以保留前端的打字机效果 (ChatGPT 前端用的. 其他服务一般不需要使用该配置, 可以注释掉.)
    proxy_buffering off;

    # 反向代理 web-server 的 /admin 和 /static 请求到 3389 端口
    location /admin {
        # TODO: 设置为本地开起来的后端服务地址
        proxy_pass http://127.0.0.1:3389;

        # 设置转发请求时的 HTTP 头部信息
        #
        # 将客户端的原始 Host 头部信息传递给后端服务器,使得后端服务器能够正确处理请求的域名
        proxy_set_header Host $http_host;
        # 将客户端的真实 IP 地址传递给后端服务器,以便后端服务器能够记录客户端的真实 IP 地址
        proxy_set_header X-Real-IP $remote_addr;
        # 将客户端的 IP 地址列表传递给后端服务器,以便后端服务器能够了解请求的经过路径
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    location /static {
        # TODO: 设置为本地开起来的后端服务地址
        proxy_pass http://127.0.0.1:3389;

        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    # 反向代理 client 的请求到 8080 端口
    location / {
        # TODO: 设置为本地开起来的前端服务地址
        proxy_pass http://127.0.0.1:8080;

        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

sites-available 中的配置文件用于归档, 如果需要让 Nginx 启用这些配置, 还需要把该配置放入 /etc/nginx/sites-enabled文件夹中. 这通常使用软链接来实现:

cd /etc/nginx/sites-enabled
sudo ln -s /etc/nginx/sites-available/chatgpt .


注意 /etc/nginx/sites-enabled 下会有个默认的软连接 default, 直接删掉即可.
然后重载 Nginx 配置
 

sudo systemctl reload nginx

如果 Nginx 配置没问题的话, 此时访问 http://hahaha.jarvis73.com 就会自动重定向到 https://hahaha.jarvis73.com, 同时浏览器在打开该链接时地址栏左侧会显示加锁, 点击锁的图标会显示连接安全(此网站具有由受信任的机构颁发的有效证书), 表示所配置的 SSL 证书核验通过.

免费证书通常是 1 年有效期, 到期需要重新申请证书并更新到 Nginx 服务中, 到期未更新则访问网站时锁的图标会加一个斜线表示不安全

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值