以下是在 Nginx 中配置 HTTPS 协议的详细步骤:
一、准备证书和密钥文件
-
获取证书
- 你可以从证书颁发机构(CA)购买证书,如 Let's Encrypt、DigiCert 等。Let's Encrypt 是一个免费的、自动化的、开放的证书颁发机构,很受欢迎。
- 也可以使用自签名证书用于测试目的。自签名证书可以通过
openssl
工具生成。例如,以下命令可以生成一个自签名证书和私钥:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout yourdomain.key -out yourdomain.crt
这个命令会提示你输入一些信息,如国家、州 / 省、城市、组织、组织单位、通用名称(通常是你的域名)等。
-
放置证书文件
- 将生成或获取的证书文件(
.crt
文件)和私钥文件(.key
文件)放置在 Nginx 服务器可以访问的目录中,例如/etc/nginx/ssl/
目录。
- 将生成或获取的证书文件(
二、配置 Nginx 支持 HTTPS
-
编辑 Nginx 配置文件
- 打开 Nginx 的主配置文件,通常是
/etc/nginx/nginx.conf
,或者是在/etc/nginx/conf.d/
目录下的服务器块配置文件(例如yourdomain.conf
)。 - 在
server
块中添加或修改以下内容来启用 HTTPS:
server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /etc/nginx/ssl/yourdomain.crt; ssl_certificate_key /etc/nginx/ssl/yourdomain.key; # 以下是一些可选的SSL配置,用于提高安全性 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE - RSA - AES128 - GCM - SHA256:ECDHE - RSA - AES256 - GCM - SHA384:ECDHE - RSA - AES128 - SHA256:ECDHE - RSA - AES256 - SHA384:ECDHE - RSA - AES128 - SHA:ECDHE - RSA - AES256 - SHA:RSA - AES128 - GCM - SHA256:RSA - AES256 - GCM - SHA384:RSA - AES128 - SHA256:RSA - AES256 - SHA384:RSA - AES128 - SHA:RSA - AES256 - SHA; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; location / { root /usr/share/nginx/html; index index.html index.htm; } }
- 在上述配置中:
listen 443 ssl;
表示 Nginx 将在 443 端口监听 HTTPS 请求,ssl
关键字表示启用 SSL/TLS 加密。server_name
是你的域名,需要替换为实际的域名。ssl_certificate
和ssl_certificate_key
分别指定了证书文件和私钥文件的路径。- 后面的
ssl_protocols
、ssl_ciphers
等配置项是用于设置 SSL/TLS 协议版本和加密套件,以提高安全性。这些配置可以根据你的安全需求和服务器性能进行调整。
- 打开 Nginx 的主配置文件,通常是
-
检查配置并重启 Nginx
- 在修改配置后,使用以下命令检查 Nginx 配置文件是否有语法错误:
nginx -t
- 如果配置文件语法正确,会显示类似
nginx: the configuration file /etc/nginx/nginx.conf syntax is correct
的信息。然后可以使用以下命令重启 Nginx 服务:
service nginx restart
- 对于一些系统(如 Ubuntu),也可以使用
systemctl
命令来重启 Nginx:
systemctl restart nginx
这样,你的 Nginx 服务器就配置好了 HTTPS 协议,用户可以通过https://yourdomain.com
来访问你的网站,并且数据传输是加密的。