📜  nginx https (1)

📅  最后修改于: 2023-12-03 15:33:06.908000             🧑  作者: Mango

Nginx HTTPS

什么是 HTTPS?

HTTPS(Hyper Text Transfer Protocol Secure)是一种通过加密和认证机制来确保网络连接安全的协议。通过 HTTPS 连接的数据传输,能够保证传输数据的完整性和保密性,并能够验证对方的身份,避免中间人攻击。

Nginx 的 HTTPS 配置

Nginx 是一个高性能、高并发的 Web 服务器,也是一款轻量级的反向代理服务器。在使用 Nginx 作为 Web 服务器的同时,我们还可以为它添加 HTTPS 支持来保障传输安全。

申请 SSL 证书

在 Nginx 上使用 HTTPS,首先需要申请 SSL 证书。在互联网上,有很多免费的 SSL 证书颁发机构,如 Let's Encrypt、Comodo 等。大家可以根据实际需求选择合适的证书颁发机构。

配置 SSL

在配置 HTTPS 前,需要先在 Nginx 的主配置文件 nginx.conf 中添加以下配置:

http {
    # 以上省略 ...
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

然后在 /etc/nginx/conf.d/ 目录下新增一个 ssl.conf 文件,作为 ssl 配置文件,添加以下代码片段:

server {
    listen 443 ssl;
    server_name yourdomain.com;

    # SSL 配置
    ssl_certificate /path/to/your_domain.crt;
    ssl_certificate_key /path/to/your_domain.key;

    # 开启加密算法
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    # 指定加密算法
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

    # SSL 会话缓存设置
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # SSL 线程数量
    ssl_stapling on;
    ssl_stapling_verify on;

    # HTTPS 限速设置
    limit_rate 500k;
    limit_rate_after 500m;

    # HTTPS 负载均衡设置
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_read_timeout 5m;
        proxy_send_timeout 5m;
    }
}

在以上代码片段中,你需要配置你自己的域名和 SSL 证书路径。另外,还可以根据需要进行其他配置。

配置 HTTP 转 HTTPS

在配置完 SSL 后,我们还需要配置 HTTP 自动转发到 HTTPS 端口,以保障用户安全。这可以通过添加一段配置代码实现:

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

同样需要将你自己的域名配置进去。

总结

通过以上步骤,我们就可以使用 Nginx 配置 HTTPS、HTTP 自动转发等功能,给用户提供安全、可靠的服务。当然,具体的配置还需要按照自己的需求进行调整和完善。