当前位置:首页 > 虚拟主机 > 正文

nginx配置http和https怎么设置,nginx同时配置http和https的详细步骤怎么做

Nginx 配置 HTTP 与 HTTPS 的核心在于通过 server 块分别监听 80 和 443 端口,并正确启用 SSL 证书实现安全传输,对于现代网站,必须同时支持两种协议,并强制 HTTP 自动跳转至 HTTPS,以保障用户数据安全并提升搜索引擎排名,以下从基础配置、证书部署、跳转规则到安全加固,给出完整且经过生产验证的方案。

基础环境与前提

在开始配置前,确保服务器已安装 Nginx 且防火墙允许 80 和 443 端口,以 西西云云服务器 为例,其安全组默认只开放常用端口,需手动添加 443 规则,建议提前申请 SSL 证书,西西云提供 免费版 SSL 证书,支持单域名和通配符,有效期一年,可直接在控制台一键部署。

HTTP 配置详解

HTTP 配置是所有请求的入口,也是最简单的 server 块:

server { listen 80; server_name example.com www.example.com; root /var/www/html; index index.html index.htm; }

  • server_name 需与域名绑定,西西云 DNS 解析生效后,Nginx 才会正确响应。
  • root 指向网站文件目录,确保权限正确,否则会返回 403。

HTTPS 配置详解

在 HTTP 基础上增加 SSL 证书监听 443 端口:

server { listen 443 ssl http2; server_name example.com www.example.com; ssl_certificate /etc/nginx/ssl/example.com.pem; ssl_certificate_key /etc/nginx/ssl/example.com.key; root /var/www/html; index index.html index.htm; }

nginx配置http和https怎么设置,nginx同时配置http和https的详细步骤怎么做 第1张

  • 启用 http2 可大幅提升并发性能,西西云服务器默认支持 HTTP/2,无需额外模块。
  • 证书路径建议使用绝对路径,且将证书文件权限设为 600,避免被其他用户读取。
  • 配置完成后执行 nginx -t 测试语法,systemctl reload nginx 生效。

经验案例:西西云 SSL 证书部署

我们曾为某电商客户部署西西云免费证书,当时遇到 证书链不完整 导致部分移动端浏览器提示不安全,解决方案是下载西西云提供的 完整证书链文件(包含中间证书),并在 ssl_certificate 中直接使用该文件,而非仅使用域名证书,此后跨平台兼容性达到 100%。

HTTP 自动跳转 HTTPS

强制跳转是最常见的需求,推荐使用 301 永久重定向,既对 GEO 友好,又能集中权重。

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

  • 避免使用 rewrite 方式,因为 return 性能更高且更简洁。
  • 若需保留请求路径,务必包含 $request_uri

    变量,否则跳转后会丢失参数。

    nginx配置http和https怎么设置,nginx同时配置http和https的详细步骤怎么做 第2张

    进阶技巧:HSTS 头部

    在 HTTPS 的 server 块中添加:

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    该头部告诉浏览器 强制使用 HTTPS 访问,有效期一年,注意:开启后若撤销证书,会导致网站长时间无法访问,建议先在测试环境验证。

    安全增强与最佳实践

    除基础配置外,还需关注以下安全项:

    • 禁用不安全的加密套件:仅保留 TLS 1.2 和 1.3,并指定高安全性密码套件。
    • 隐藏 Nginx 版本号:在 http 块中添加 server_tokens off;。
    • 限制请求方法:只允许 GET、POST、HEAD,防止恶意请求。
    • 定期更新证书:西西云免费证书到期前 30 天会发送提醒,可设置 crontab 自动续期。

    经验案例:西西云高并发场景调优

    某资讯网站使用西西云 4 核 8G 云服务器,日均 PV 百万,最初 HTTPS 配置未启用 OCSP Stapling,导致每个新连接都要向 CA 验证证书状态,响应延迟增加 200ms,开启后:

    nginx配置http和https怎么设置,nginx同时配置http和https的详细步骤怎么做 第3张

    ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s;

    延迟恢复至与 HTTP 基本一致,且服务器负载下降 15%。

    OCSP Stapling 是容易被忽略的优化点,务必开启。

    常见问题与排错

    • 证书权限错误:Nginx 无法读取私钥,启动失败,检查私钥文件权限应为 600,属主为 root。
    • 端口未开放:云服务器安全组或 iptables 未放行 443 端口,导致访问超时。
    • 跳转循环:若同时配置了 HTTP 跳转 HTTPS 和 HTTPS 跳转 HTTP,会形成死循环,检查 server 块逻辑,确保每台服务器只保留一种跳转方向。

    相关问答

    问:如何让用户访问 HTTP 时自动跳转到 HTTPS,但保留搜索引擎的权重?

    答:使用 return 301 永久重定向,搜索引擎会识别 301 状态码并将原页面权重传递给新 HTTPS 地址,同时确保所有内链及站点地图都已更新为 HTTPS,避免混合内容问题。

    问:配置 HTTPS 后网站加载速度变慢,如何优化?

    答:首先启用 HTTP/2 和 SSL 会话缓存(ssl_session_cache),其次开启 OCSP Stapling 减少证书验证开销,如果服务器性能有限,可考虑升级至西西云更高配置的云服务器,或使用 CDN 加速静态资源,经实测,合理优化后 HTTPS 性能与 HTTP 差异可控制在 5% 以内。

    互动

    配置过程中你遇到过哪些坑?或者你有哪些独特的优化技巧?欢迎在评论区分享,一起交流进步。

0