nginx配置支持https的示例代码

yizhihongxing

下面是nginx配置支持https的完整攻略:

1. 生成SSL证书

首先需要从CA机构或者自签颁发机构申请SSL证书,若是自签颁发机构需要通过 OpenSSL 工具生成相应证书,具体操作如下:

  1. 安装 OpenSSL 工具
sudo apt-get install openssl
  1. 创建自签名请求文件,生成公、私钥对和最终SSL证书
mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
openssl req -newkey rsa:2048 -nodes -keyout yourdomain.com.key -out yourdomain.com.csr
openssl x509 -req -days 365 -in yourdomain.com.csr -signkey yourdomain.com.key -out yourdomain.com.crt

其中 yourdomain.com.crt 为生成的 SSL 证书, yourdomain.com.key 为生成的 SSL 私钥。

2. 配置nginx

  1. 打开nginx配置文件
sudo vim /etc/nginx/nginx.conf
  1. http 块中添加下列内容:
# 开启转发代理
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

# 开启SSL
ssl_certificate /etc/nginx/ssl/yourdomain.com.crt;
ssl_certificate_key /etc/nginx/ssl/yourdomain.com.key;

# SSL优化配置
ssl_session_cache shared:SSL:10m;
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;

# 配置证书验证方式
ssl_client_certificate /etc/nginx/ssl/ca.crt;
ssl_verify_client on;
  1. 配置server块
server {
    listen 80;
    server_name example.com;
    return 301 https://example.com$request_uri;
}
server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;
    ssl_client_certificate /etc/nginx/ssl/ca.crt;
    ssl_verify_client on;

    location / {
        proxy_pass http://localhost:3000/;
    }
}

3. 测试是否配置成功

  1. 启动nginx
sudo nginx -t && sudo nginx
  1. 在浏览器中访问站点,看看是否能成功使用 HTTPS 连接。

以上就是支持 HTTPS 的 nginx 配置攻略。

示例一:HTTPS转发静态网页

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;
    ssl_client_certificate /etc/nginx/ssl/ca.crt;
    ssl_verify_client on;

    root /var/www/html;

    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

示例二:HTTPS转发Node.js应用

server {
    listen   443 ssl;
    server_name  example.com;

    ssl_certificate /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;
    ssl_client_certificate /etc/nginx/ssl/ca.crt;
    ssl_verify_client on;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

以上就是两个示例,第一个示例演示了如何转发静态网页,第二个示例是如何转发Node.js应用。

希望以上内容对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nginx配置支持https的示例代码 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • Python async+request与async+aiohttp实现异步网络请求探索

    Python async+requests与async+aiohttp实现异步网络请求探索 异步和同步 在Python编程中,通常有两种方式来进行多任务处理,分别是同步和异步。 在同步模式下,任务是按顺序执行的,当一个任务没有执行完毕时,下一个任务就必须等待。这种方式下,任务执行效率很低,往往也比较难来处理网络请求等事情。 在异步模式下,程序可以同时执行多个…

    人工智能概论 2023年5月25日
    00
  • python socket网络编程之粘包问题详解

    我来为您详细讲解“python socket网络编程之粘包问题详解”的完整攻略。 一、什么是粘包问题 在进行网络编程时,粘包是一种常见的问题。简单来说,粘包指的是发送方将多个数据包粘在一起发送,接收方无法正确识别数据包的边界而将其误认为一个数据包,从而引发解析错误或数据丢失。 二、粘包问题产生的原因 粘包问题的产生原因多种多样,以下是几种常见的原因: 使用T…

    人工智能概论 2023年5月24日
    00
  • Python django框架输入汉字,数字,字符生成二维码实现详解

    首先,我们需要明确一下本攻略的目的:即使用 Python 和 Django 框架实现输入汉字、数字和字符生成二维码的功能。接下来,将从以下三个步骤详细讲解整个流程: 安装必要库和工具 我们需要使用 Python 语言和 Django 框架来实现这个功能,因此需要安装 Python 和 Django 相应的库。同时,为了生成二维码,我们还需要安装 qrcode…

    人工智能概论 2023年5月25日
    00
  • windows下安装python paramiko模块的代码

    以下是在Windows下安装Python paramiko模块的完整攻略: 1. 安装pip pip是Python的包管理工具,我们需要先安装它来管理我们需要的模块。可以通过以下命令安装: python -m ensurepip –default-pip 上述命令需要在Windows命令提示符或PowerShell中执行。如果已安装最新版本的Python,…

    人工智能概览 2023年5月25日
    00
  • pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)

    下面是在PyCharm中配置PyQt5教程(Anaconda虚拟环境下+tensorflow)的完整攻略: 确认环境 首先,我们需要确保以下环境已经安装: Anaconda(有conda环境管理器) PyCharm(安装了Python插件) TensorFlow(可以通过conda或pip进行安装) 创建conda虚拟环境并安装PyQt5 打开Anacond…

    人工智能概论 2023年5月25日
    00
  • .netcore 使用surging框架发布到docker

    环境准备 首先我们需要准备本地的开发环境,主要包括以下几个方面: 安装 Docker 安装 Docker Compose 安装 .NET Core SDK 创建 .NET Core 应用 我们需要创建一个 .NET Core 应用,使用 Surging 框架,这里提供一个简单的示例: 使用 Visual Studio Code 打开控制台,执行以下命令: d…

    人工智能概览 2023年5月25日
    00
  • django8.5 项目部署Nginx的操作步骤

    我可以为您提供如下关于“django8.5 项目部署Nginx的操作步骤”的完整攻略: 一、安装Nginx 执行命令:sudo apt-get update更新系统软件包列表 执行命令:sudo apt-get install nginx安装Nginx软件包 二、配置Nginx 进入Nginx配置文件目录:cd /etc/nginx/ 备份默认配置文件:su…

    人工智能概览 2023年5月25日
    00
  • 惠普星14Pro值得入手吗 惠普星14 Pro详细评测

    惠普星14Pro值得入手吗 硬件配置 惠普星14Pro采用了AMD锐龙5 5600U处理器,集成了AMD Radeon集成显卡,同时拥有16GB DDR4 3200MHz内存以及512GB NVMe SSD硬盘,这样的配置为正常的工作或者日常娱乐已经足够。 外观设计 惠普星14Pro整体采用黑色金属材质打造,简约而大气,整机体重为约1.35Kg,笔记本采用1…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部