详解nginx实现https网站设置

  

详解Nginx实现HTTPS网站设置

1. 什么是HTTPS?

HTTPS全称是“HTTP Secure”,是一种更为安全的网站加密传输协议。

普通的HTTP协议传输的数据都是明文的,容易被黑客窃取和篡改,而HTTPS协议采用SSL或者TLS协议进行加密传输,可以有效保护数据的安全。

2. 设置HTTPS的必备条件

  • 云服务器一台
  • 域名一个
  • 申请SSL证书,可以通过Let's Encrypt免费获取

3. Nginx实现HTTPS网站的设置步骤

3.1 安装Nginx

使用命令sudo apt-get install nginx 可以安装Nginx。

3.2 申请SSL证书

可以通过以下步骤来申请SSL证书:

步骤1:为服务器绑定域名

首先需要为服务器绑定域名,可以在DNS解析中添加一条A记录,将域名解析到服务器的公网IP地址上。

步骤2:安装Certbot

Certbot是一个自动化的SSL证书颁发工具,可以帮助自动从Let's Encrypt获取SSL证书。可以通过以下命令安装Certbot:

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot

步骤3:生成SSL证书

使用以下命令来为域名申请SSL证书:

sudo certbot certonly --webroot --webroot-path /var/www/yourdomain --domain yourdomain.com

其中/var/www/yourdomain是web目录的路径,yourdomain.com是需要申请SSL证书的域名。

3.3 配置Nginx

步骤1:配置HTTP站点

使用以下配置来配置HTTP站点:

server {
    listen 80;
    server_name yourdomain.com;
    root /var/www/yourdomain;
    location / {
        index index.html;
    }
}

其中/var/www/yourdomain是web目录的路径,yourdomain.com是需要配置HTTP站点的域名。

步骤2:配置HTTPS站点

使用以下配置来配置HTTPS站点:

server {
    listen 443 ssl;
    server_name yourdomain.com;
    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
    root /var/www/yourdomain;
    location / {
        index index.html;
    }
}

其中/etc/letsencrypt/live/yourdomain.com/fullchain.pem/etc/letsencrypt/live/yourdomain.com/privkey.pem是SSL证书的路径,yourdomain.com是需要配置HTTPS站点的域名。

3.4 重启Nginx

使用以下命令来重启Nginx:

sudo systemctl restart nginx

4. 示例说明

以下是两个关于Nginx实现HTTPS网站设置的具体案例:

示例1:配置单个域名的HTTPS站点

例如,我们要配置一个名为mywebsite.com的HTTPS站点:

  1. 将服务端绑定域名mywebsite.com

  2. 安装Certbot:sudo apt-get install certbot

  3. 生成证书:sudo certbot certonly --webroot --webroot-path /var/www/mywebsite --domain mywebsite.com

  4. 配置Nginx

server {
    listen 80;
    server_name mywebsite.com;
    root /var/www/mywebsite;
    location / {
        index index.html;
    }
}

server {
    listen 443 ssl;
    server_name mywebsite.com;
    ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mywebsite.com/privkey.pem;
    root /var/www/mywebsite;
    location / {
        index index.html;
    }
}

示例2:配置多个域名的HTTPS站点

例如,我们要配置两个域名mywebsite.commyblog.com

  1. 将服务端绑定两个域名

  2. 安装Certbot:sudo apt-get install certbot

  3. 生成证书:

sudo certbot certonly --webroot --webroot-path /var/www/mywebsite --domain mywebsite.com
sudo certbot certonly --webroot --webroot-path /var/www/myblog --domain myblog.com
  1. 配置Nginx:
server {
    listen 80;
    server_name mywebsite.com;
    root /var/www/mywebsite;
    location / {
        index index.html;
    }
}

server {
    listen 443 ssl;
    server_name mywebsite.com;
    ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mywebsite.com/privkey.pem;
    root /var/www/mywebsite;
    location / {
        index index.html;
    }
}

server {
    listen 80;
    server_name myblog.com;
    root /var/www/myblog;
    location / {
        index index.html;
    }
}

server {
    listen 443 ssl;
    server_name myblog.com;
    ssl_certificate /etc/letsencrypt/live/myblog.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/myblog.com/privkey.pem;
    root /var/www/myblog;
    location / {
        index index.html;
    }
}

以上就是详解Nginx实现HTTPS网站设置的完整攻略。

相关文章