详解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站点:
-
将服务端绑定域名
mywebsite.com
-
安装Certbot:
sudo apt-get install certbot
-
生成证书:
sudo certbot certonly --webroot --webroot-path /var/www/mywebsite --domain mywebsite.com
-
配置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.com
和myblog.com
:
-
将服务端绑定两个域名
-
安装Certbot:
sudo apt-get install certbot
-
生成证书:
sudo certbot certonly --webroot --webroot-path /var/www/mywebsite --domain mywebsite.com
sudo certbot certonly --webroot --webroot-path /var/www/myblog --domain myblog.com
- 配置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网站设置的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解nginx实现https网站设置 - Python技术站