Nginx:支持 HTTPS

文章目录

    • [Nginx 开启 ssl 以支持 HTTPS](#Nginx 开启 ssl 以支持 HTTPS)
      • [1 生成本地证书](#1 生成本地证书)
      • [2 开启 ssl 以支持 HTTPS](#2 开启 ssl 以支持 HTTPS)
      • [3 将 https 的请求转发给 http](#3 将 https 的请求转发给 http)
    • [最终的 nginx.conf 如下](#最终的 nginx.conf 如下)

Nginx 开启 ssl 以支持 HTTPS

!IMPORTANT

在下文中,将采用如下定义。

HTTP端口: 80

HTTPS端口: 443

服务地址: www.0ll1.com,也可以是 IP

1 生成本地证书

  1. 生成一个 RSA 私钥:server.key

    nginx 复制代码
    openssl genrsa -out server.key 2048
  2. 生成一个自签名的 X.509 证书:server.crt

    nginx 复制代码
    openssl req -new -x509 -days 8760 -key server.key -out server.crt -subj "/C=CN/O=Institute of Information Engineering, CAS/CN=www.0ll1.com"

2 开启 ssl 以支持 HTTPS

nginx 复制代码
server {
    listen 443 ssl;
    server_name www.0ll1.com;
    ssl_certificate /usr/local/nginx/cert/server.crt;
    ssl_certificate_key /usr/local/nginx/cert/server.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
    ssl_prefer_server_ciphers on;
}

3 将 https 的请求转发给 http

nginx 复制代码
server {
    location / {
        proxy_set_header Host $host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 60;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
        proxy_pass http://www.0ll1.com:80;
    }
}

!NOTE

只需要将 proxy_pass 修改为 http 服务的 url 即可。

最终的 nginx.conf 如下

nginx 复制代码
server {
    listen 443 ssl;
    server_name www.0ll1.com;
    ssl_certificate /usr/local/nginx/cert/server.crt;
    ssl_certificate_key /usr/local/nginx/cert/server.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_set_header Host $host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 60;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
        proxy_pass http://www.0ll1.com:80;
    }
}
相关推荐
The Sheep 202318 分钟前
MicroService(Redis)
数据库·redis·c#
腾讯云数据库27 分钟前
「腾讯云NoSQL」技术之MongoDB篇:MongoDB 5.0→8.0 balance性能提升40%内幕揭秘
数据库·nosql
一 乐36 分钟前
远程在线诊疗|在线诊疗|基于java和小程序的在线诊疗系统小程序设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·小程序
2501_915918411 小时前
HTTP和HTTPS工作原理、安全漏洞及防护措施全面解析
android·http·ios·小程序·https·uni-app·iphone
落叶的悲哀1 小时前
mysql tidb like查询有换行符内容问题解决
数据库·mysql·tidb
wangchen_01 小时前
MySQL索引
数据库·mysql
哈__2 小时前
数据库迁移实操与金仓数据库技术优势:从语法兼容到自动化落地
数据库
蟹至之2 小时前
增删查改(其一) —— insert插入 与 select条件查询
数据库·mysql·增删查改
Yeats_Liao2 小时前
时序数据库系列(七):性能监控实战指标收集
数据库·后端·时序数据库
无心水2 小时前
【中间件:Redis】1、Redis面试核心:线程模型深度解析(6.0前后变化+工作流程)
数据库·redis·面试·redis面试·redis原理·redis线程模型·后端技术