编程技术分享平台

网站首页 > 技术教程 正文

蓝易云 - Nginx【https配置教程】

xnh888 2024-09-19 06:25:55 技术教程 34 ℃ 0 评论

Nginx HTTPS 配置教程

在当今网络安全日益重要的背景下,使用HTTPS协议来保护网站数据传输变得尤为重要。Nginx作为一个高性能的Web服务器和反向代理服务器,支持HTTPS配置。本文将详细介绍如何在Nginx上配置HTTPS。

一、准备工作

  1. 操作系统:本文以CentOS 7为例,但其他Linux发行版类似。
  2. Nginx安装:确保Nginx已经安装并运行。
  3. SSL证书:获取有效的SSL证书,可以从Let's Encrypt等免费证书提供商获取。

二、安装Certbot获取免费SSL证书

Certbot是一个免费的工具,可以自动获取和更新Let's Encrypt提供的SSL证书。

  1. 安装EPEL存储库
  2. sudo yum install epel-release -y
  3. 安装Certbot
  4. sudo yum install certbot python2-certbot-nginx -y
  5. 获取SSL证书
  6. sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
  7. yourdomain.com 和 www.yourdomain.com 替换为实际域名。
  8. 按照提示完成域名验证和证书获取。

三、手动配置Nginx使用SSL证书

如果不使用Certbot自动配置,可以手动配置Nginx使用SSL证书。

  1. 生成自签名证书(用于测试)
  2. sudo openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout /etc/nginx/ssl/nginx-selfsigned.key -out /etc/nginx/ssl/nginx-selfsigned.crt
  3. 该命令生成一个自签名证书和私钥,保存路径为 /etc/nginx/ssl/。
  4. 创建Nginx配置文件
    编辑Nginx配置文件,添加以下内容:
  5. server { listen 80; server_name yourdomain.com www.yourdomain.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name yourdomain.com www.yourdomain.com; ssl_certificate /etc/nginx/ssl/nginx-selfsigned.crt; ssl_certificate_key /etc/nginx/ssl/nginx-selfsigned.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; root /var/www/html; index index.html index.htm index.nginx-debian.html; location / { try_files $uri $uri/ =404; } }
  6. listen 80:监听80端口,重定向所有HTTP请求到HTTPS。
  7. listen 443 ssl:监听443端口,并启用SSL。
  8. ssl_certificate 和 ssl_certificate_key:指定SSL证书和密钥路径。
  9. ssl_protocols 和 ssl_ciphers:指定使用的SSL/TLS协议和加密套件。
  10. 测试Nginx配置并重启服务
  11. sudo nginx -t sudo systemctl restart nginx
  12. nginx -t:测试Nginx配置文件语法。
  13. systemctl restart nginx:重启Nginx服务使配置生效。

四、优化HTTPS配置

  1. 启用HTTP/2
    HTTP/2提供更好的性能,可以通过在443端口配置中添加 http2启用。
  2. listen 443 ssl http2;
  3. 配置更严格的安全选项
  4. ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
  5. ssl_prefer_server_ciphers on:优先使用服务器指定的加密套件。
  6. ssl_session_cache 和 ssl_session_timeout:配置SSL会话缓存,提高性能。
  7. Strict-Transport-Security:强制浏览器通过HTTPS访问。

五、自动更新SSL证书

使用Certbot自动更新证书,确保证书不会过期。

  1. 创建Cron任务
  2. echo "0 0 * * * /usr/bin/certbot renew --quiet" | sudo tee -a /etc/crontab > /dev/null
  3. 该命令每天午夜运行Certbot更新证书。

思维导图

通过本文的详细步骤和配置示例,您可以在Nginx上成功配置HTTPS,并确保通信的安全性和效率。希望这些内容对您有所帮助。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表