Nginx+SSL搭建 HTTPS 网站

  

下面详细讲解如何使用Nginx和SSL搭建HTTPS网站:

确认SSL证书

在开始搭建HTTPS网站之前,需要确保已经拥有有效的SSL证书。若没有,可以在任何一家可靠的证书提供商处购买。购买完证书后,需要将证书下载到本地存储。

安装Nginx

首先,需要安装Nginx,可以在终端中使用以下命令安装:

sudo apt-get update 
sudo apt-get install nginx 

配置SSL证书

安装完Nginx后,需要配置SSL证书。首先需要将SSL证书文件上传到服务器上,然后在Nginx的配置文件中进行配置。以下为示例配置文件:

server {
    listen              80;
    server_name         example.com www.example.com;
    return301 https://www.example.com$request_uri;
}


server {
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     /path/to/cert.pem;
    ssl_certificate_key /path/to/privkey.pem;

    root                /var/www/example;
    index               index.html;

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

需要修改配置文件中的以下内容:

  • server_name: 改为自己的域名。
  • ssl_certificate: 替换成服务器上的证书文件路径。
  • ssl_certificate_key: 替换成服务器上的私钥文件路径。
  • root和index: 修改成自己网站的根目录和默认主页。

测试网站

修改完配置文件后,需要重启Nginx并测试网站是否正常。在终端中依次输入以下命令:

sudo systemctl restart nginx 
sudo systemctl status nginx 

如果没有出现错误信息,表示Nginx已成功重启。然后在浏览器中输入网站的URL,即可访问网站。如果浏览器中出现绿色的锁图标,且网站URL以https开头,则证明HTTPS已经成功启用,说明搭建HTTPS网站已经完成。

示例说明

下面给出两个实际的示例,以帮助更好地理解搭建HTTPS网站的过程:

示例1

以Ubuntu 18.04系统为例,使用Let's Encrypt证书来搭建HTTPS网站。

  1. 安装Certbot客户端,用于自动获取、安装和配置Let's Encrypt证书。
sudo apt-get update 
sudo apt-get install software-properties-common 
sudo add-apt-repository ppa:certbot/certbot 
sudo apt-get update 
sudo apt-get install certbot 
  1. 获取证书并完成配置,使用以下命令即可:
sudo certbot certonly --webroot --agree-tos --email admin@example.com --webroot-path=/var/www/example -d www.example.com
  1. 修改Nginx的配置文件。

在/etc/nginx/sites-available/目录下,新建一个新的配置文件,例如example.com.conf,并且添加以下内容:

server {
    listen              80;
    server_name         example.com www.example.com;

    location /.well-known/acme-challenge/ {
        root            /var/www/example;            
    }

    location / {
        return          301 https://www.example.com$request_uri;
    }
}

server {
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     /etc/letsencrypt/live/www.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/www.example.com/chain.pem;

    root                /var/www/example;
    index               index.html;

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

需要将example.com.conf文件中的server_name、ssl_certificate、ssl_certificate_key和ssl_trusted_certificate替换成自己的域名和证书路径。

  1. 重启Nginx服务器和测试网站。
sudo systemctl restart nginx 
sudo systemctl status nginx 

在浏览器中输入网站URL,如果正常访问,说明HTTPS搭建成功。

示例2

以CentOS 7系统为例,使用自签名证书来搭建HTTPS网站(不推荐使用自签名证书)。

  1. 生成私钥和自签名证书。
sudo openssl req -x509 -nodes -days365 -newkey rsa:2048 -keyout /etc/pki/tls/private/mykey.key -out /etc/pki/tls/certs/mycert.cert

在上述命令中,需要填写一些证书信息,例如国家、省份、城市、组织机构名、主题等。

  1. 修改Nginx的配置文件。

在/etc/nginx/conf.d/目录下,新建一个新的配置文件,例如example.com.conf,并添加以下内容:

server {
    listen              80;
    server_name         example.com www.example.com;
    return              301 https://$server_name$request_uri;
}

server {
    listen              443 ssl;
    server_name         example.com www.example.com;
    root                /var/www/example;
    index               index.html;

    ssl_certificate     /etc/pki/tls/certs/mycert.cert;
    ssl_certificate_key /etc/pki/tls/private/mykey.key;

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

需要将example.com.conf文件中的server_name、ssl_certificate和ssl_certificate_key替换成自己的域名和证书路径。

  1. 重启Nginx服务器和测试网站。
sudo systemctl restart nginx 
sudo systemctl status nginx 

在浏览器中输入网站URL,如果正常访问,说明HTTPS搭建成功。

以上就是如何使用Nginx和SSL搭建HTTPS网站的完整攻略和两个示例说明,希望对您有所帮助。

相关文章