Nginx配置ssl实现https的全过程记录

下面是“Nginx配置ssl实现https的全过程记录”的完整攻略。

Nginx配置ssl实现https的全过程记录

什么是ssl

SSL(Secure Sockets Layer),即安全套接字层,SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通信提供安全支持。为了使用SSL协议,必须向证书授权中心(CA)申请证书。

获取ssl证书

在申请SSL证书之前,我们需要购买域名,可以通过阿里云、腾讯云等专业服务商购买。

在购买了域名之后,可以通过以下步骤申请SSL证书:

  1. 安装certbot工具:该工具可以自动从LetsEncrypt申请免费的证书。
sudo apt install certbot
  1. 申请证书:使用certbot工具申请证书,输入以下命令即可。
sudo certbot certonly --webroot -w /var/www/html/mydomain.com/ -d mydomain.com

其中-w参数指定了网站文件的路径,-d参数指定了域名。

  1. 证书获取成功后,会存在/etc/letsencrypt/live/mydomain.com/目录下,包括cert.pemchain.pemfullchain.pem等文件,这些文件我们配置nginx会用到。

配置Nginx实现https

  1. 修改Nginx配置文件:进入nginx的配置目录,cd /etc/nginx/conf.d/ ,新建mydomain.com.conf文件,添加如下内容:
server {
    listen 80;
    server_name mydomain.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name mydomain.com;

    ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
    ssl_session_cache shared:SSL:10m;

    root /home/wwwroot/mydomain.com;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

  1. 验证Nginx配置:使用以下命令重载nginx配置文件:
nginx -t
nginx -s reload
  1. 打开浏览器,在地址栏输入mydomain.com,即可查看网站是否已成功实现https。

示例1:Nginx配置MVC项目实现https

在实现MVC项目的https之前,需要确保.NET Core SDK已安装。

  1. 安装Let’s Encrypt的Certbot:可以在Certbot官网找到对应的安装方法。

  2. 申请证书:执行以下命令即可。

sudo certbot certonly --webroot -w /var/www/html/myproject.com/ -d myproject.com
  1. 修改Nginx配置文件myproject.conf:添加以下内容。
server {
    listen 80;
    server_name myproject.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name myproject.com;
    root /home/wwwroot/myproject.com;
        index index.html index.htm;

    # SSL parameters
    ssl_certificate /etc/letsencrypt/live/myproject.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/myproject.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/myproject.com/fullchain.pem;

    # security settings
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;

    # ASP.NET Core configuration
    location / {
        proxy_pass         http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
  1. 验证Nginx配置:使用以下命令重载nginx配置文件并运行asp.net core项目。
dotnet publish -c Release
dotnet myproject.dll
nginx -t
nginx -s reload
  1. 打开浏览器,在地址栏输入myproject.com,即可查看MVC项目是否已成功实现https。

示例2:Nginx配置WordPress实现https

在实现WordPress的https之前,需要确保已正确安装Wordpress。

  1. 申请证书:使用以下命令申请证书。
sudo certbot certonly --webroot -w /var/www/html/mywp.com/ -d mywp.com
  1. 修改Nginx配置文件mywp.conf:添加以下内容。
server {
    listen 80;
    server_name mywp.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name mywp.com;

    root /home/wwwroot/mywp.com;
    index index.php index.html index.htm;

    ssl_certificate /etc/letsencrypt/live/mywp.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mywp.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/mywp.com/fullchain.pem;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
    ssl_session_cache shared:SSL:10m;

    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

}
  1. 验证Nginx配置:使用以下命令重载nginx配置文件。
nginx -t
nginx -s reload
  1. 打开浏览器,在地址栏输入mywp.com,即可查看WordPress是否已成功实现https。

完成了以上两个示例,我们就可以成功地在Nginx上实现https协议,有了https的加持,可以保障用户的信息安全,使网站更加安全可靠。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nginx配置ssl实现https的全过程记录 - Python技术站

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

相关文章

  • linux 把nginx加入到系统服务的方法

    linux 把nginx加入到系统服务的方法一。首先写一个shell脚本,脚本名称:nginx<pre>#! /bin/bash# chkconfig: 35 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverseset -ePATH=/usr/local/sbin:/us…

    Nginx 2023年4月16日
    00
  • Nginx是什么?它有什么作用?

    Nginx是一个高性能的通用Web服务器。它可以充当Web服务器,反向代理服务器和负载平衡器等多种角色。以下是Nginx的主要功能: 静态文件服务:Nginx可以用来托管静态文件,像HTML文件、CSS文件、图片文件和JavaScript文件等。 反向代理服务器:Nginx可以代理后端服务器(如应用服务器)与客户端之间的连接,确保客户端无需知道应用服务器的存…

    Nginx 2023年4月19日
    00
  • nginx反向代理与Real-IP和X-Forwarded-For.txt

    本文作者张开涛。为保障《亿级流量网站架构核心技术》一书内容的连续性,有些需要读者了解的内容,或者书的补充和引申内容,会通过二维码嵌入的方式引导读者阅读学习。大家可以关注作者公众号“开涛的博客”,并从菜单栏“我的新书”中查阅相关内容。     本文是「4.4 接入层限流」节中的「按照IP限制并发连接数配置示例」部分需要了解的内容。    当我们访问互联网上的服…

    Nginx 2023年4月13日
    00
  • nginx详解

    一,服务介绍 是一个开源,支持高性能,高并发的www服务和代理服务软件,占用资源少,且功能丰富而逐渐流行起来, web软件(apache.lls) 反向代理负载均衡功能 (与lvs和haproxy专业代理软件) 缓存服务功能(squid,varnish) 二,服务功能以及特性 nginx重要特性 可针对静态资源做高并发访问及缓存 可使用方向代理,并且可进行数…

    Nginx 2023年4月16日
    00
  • 详解Nginx的配置函数对于请求体的读取

    Nginx是一个网络服务器软件,它能够高效地处理高并发的网络请求。Nginx的配置文件是非常重要的,其中就有一个重要的配置函数来处理请求体的读取。本文将详细讲解Nginx的配置函数对于请求体的读取,包括两条示例说明。 什么是请求体? HTTP请求通常由请求头和请求体两部分组成。请求头包含了请求相关的信息,如请求方法、请求的URL、请求头信息等。而请求体则是发…

    Nginx 2023年5月16日
    00
  • Linux版本中Nginx平滑升级与回退

    下面我会详细讲解”Linux版本中Nginx平滑升级与回退”的攻略,包括以下步骤: 1.备份现有的Nginx配置文件和二进制文件 在进行平滑升级或回退之前,需要先备份现有的Nginx配置文件和二进制文件。可以通过以下命令备份: $ sudo cp -r /etc/nginx ~/nginx_backup $ sudo cp -r /usr/sbin/ngin…

    Nginx 2023年5月16日
    00
  • ansible-playbook(nginx例)

    一、创建目录结构   cd /etc/ansible/roles/   mkdir nginx/{files,templates,vars,handlers,meta,default,tasks} -pv 二、files/:存储由copy或script等模块调用的文件;   wget http://nginx.org/download/nginx-1.13.…

    Nginx 2023年4月11日
    00
  • 如何配置Nginx的FastCGI缓存验证?

    Nginx提供了FastCGI缓存模块,可以缓存FastCGI应答内容,从而提升Web页面的访问速度。在使用FastCGI缓存的时候,我们需要检查缓存内容是否已经过期,并且需要验证缓存内容是否与源服务器的内容一致。 以下是如何配置Nginx的FastCGI缓存验证的完整攻略: 步骤1:启用FastCGI缓存 首先,我们需要在Nginx配置文件中开启FastC…

    Nginx 2023年4月19日
    00
合作推广
合作推广
分享本页
返回顶部