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(CentOS)环境下安装下载Nginx并配置

    下面是基于CentOS Linux操作系统的Nginx安装和配置攻略,包含两个示例。 1. 安装Nginx 打开终端,使用root权限登录服务器。 执行以下命令进行Nginx安装: yum install nginx 当安装完成后,启动Nginx服务: systemctl start nginx 2. 配置Nginx 下面简单说明如何配置Nginx来实现不同…

    Nginx 2023年5月16日
    00
  • Nginx——stream模块

    nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发、代理或者负载均衡等 stream模块的用法和http模块差不多,语法基本一致,支持server,hash, listen, proxy_pass等指令, 配置实例如下: worker_processes auto; error_log logs/error.stream.log…

    Nginx 2023年4月13日
    00
  • Nginx Web服务应用

    Nginx介绍 nginx是一个开源的、支持高性能的、高并发的www服务以及代理服务软件 nginx的优点: 性能:占有系统资源少,支持更多的并发连接(特别是静态小文件),更高的访问效率 功能:不仅作为Web服务,还可以做反向代理负载均衡以及缓存服务 Nginx服务器的特点和三大功能 1、nginx特点 •支持高并发,能支持几万并发连接(特别是静态小文件) …

    Nginx 2023年4月13日
    00
  • Web_php_wrong_nginx_config writeup

    Web_php_wrong_nginx_config writeup Zhu013   未经允许请勿转载 1.进入页面发现需要登陆 2.robots.txt 发现hint.php Hack.php     hint.php提示     配置文件也许有问题呀:/etc/nginx/sites-enabled/site.conf     访问Hack.php提示…

    Nginx 2023年4月13日
    00
  • 使用ffmpeg+nginx实现简单的点播功能

    目录 前提条件 制作过程 配置nginx 将传入的mp4文件转化为ts 将ts切片并加入m3u8索引 结果展示 对应文件夹下生成的m3u8+ts 使用播放器VLC播放 输入nginx静态资源代理路径 gif展示 其他链接 安装了ffmpeg安装了nginx安装ffmpeg和nginx+rtmp插件教程还附带rtmp直播教程 制作过程 配置nginx 将传入的…

    Nginx 2023年4月13日
    00
  • nginx php-fpm 配置问题(1)

    nginx php-fpm 配置问题(1) 1.问题    Nginx/FPM/PHP all php files say ‘File not found.’ nginx error日志: [error] 20277#0: *21 FastCGI sent in stderr: “Primary script unknown” while reading r…

    Nginx 2023年4月10日
    00
  • 如何配置Nginx的FastCGI缓存清理?

    配置Nginx的FastCGI缓存清理,可以通过以下步骤完成: 安装Nginx模块 要配置FastCGI缓存清理,需要安装Nginx的FastCGI缓存模块。可以通过以下命令安装: cd /usr/local/src wget https://github.com/bpaquet/ngx_http_cache_purge/archive/master.zip…

    Nginx 2023年4月19日
    00
  • nginx设置目录白名单、ip白名单的实现方法

    下面是详细的讲解: 一、Nginx设置目录白名单 1.1 概述 目录白名单的作用是维护一个可以被访问的目录列表,只有列表中的目录才能被访问到,其他目录则无法通过Nginx的访问。这种设置适用于需要控制网站内部资源访问的情况,比如内部管理页面等。 1.2 实现方法 1.2.1 在配置文件中设置 在Nginx的配置文件中加入以下代码: location / { …

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