Nginx 代理Https服务

Nginx 代理转发 HTTPS 服务配置指南

要使用 Nginx 代理转发 HTTPS 服务,你需要进行以下配置:

基本 HTTPS 代理配置

text 复制代码
server {
    listen 443 ssl;
    server_name yourdomain.com;

    # SSL 证书配置
    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;
    
    # SSL 优化参数
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256...';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    location / {
        proxy_pass https://backend-server:port;  # 目标 HTTPS 服务地址
        
        # 基本代理头设置
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        # HTTPS 代理特定设置
        proxy_ssl_verify off;  # 是否验证后端证书,生产环境建议开启
        proxy_ssl_server_name on;
        proxy_ssl_session_reuse off;
    }
}

高级配置选项

‌1. 证书验证‌(生产环境推荐):

text 复制代码
proxy_ssl_verify on;
proxy_ssl_trusted_certificate /path/to/trusted_ca_cert.crt;
proxy_ssl_verify_depth 2;

‌2. WebSocket 代理支持‌:

text 复制代码
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

‌3. 负载均衡‌:

text 复制代码
upstream backend {
    server backend1.example.com:443;
    server backend2.example.com:443;
}

server {
    ...
    location / {
        proxy_pass https://backend;
        ...
    }
}

HTTP 自动跳转 HTTPS(可选)

text 复制代码
server {
    listen 80;
    server_name yourdomain.com;
    return 301 https://$host$request_uri;
}

注意事项

  1. 确保 Nginx 安装了 --with-http_ssl_module 模块
  2. 后端服务证书如果是自签名的,需要在 Nginx 配置中信任该证书
  3. 生产环境建议开启证书验证以提高安全性
  4. 根据实际需求调整缓冲区大小和超时时间

配置完成后,使用 nginx -t 测试配置是否正确,然后 nginx -s reload 重新加载配置。

nginx 代理https服务但是对外提供http服务

要实现 Nginx 代理 HTTPS 后端服务但对外提供 HTTP 访问,可以通过以下配置实现:

基础配置方案

nginx 复制代码
server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass https://backend-server;  # 后端HTTPS服务地址
        
        # 必要代理头设置
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        # HTTPS代理特定配置
        proxy_ssl_verify off;  # 生产环境建议开启验证
        proxy_ssl_server_name on;
    }
}

关键配置说明

1‌. 监听HTTP端口‌

配置listen 80表示只对外提供HTTP服务

‌2. 代理HTTPS后端‌

proxy_pass指向HTTPS协议的后端地址,Nginx会自动处理HTTPS连接

‌3. 协议头处理‌

X-Forwarded-Proto $scheme确保后端服务能识别原始请求协议

高级配置建议

1‌. SSL证书验证‌(生产环境推荐):

nginx 复制代码
proxy_ssl_verify on;
proxy_ssl_trusted_certificate /path/to/ca.crt;

‌2. WebSocket支持‌:

nginx 复制代码
Copy Code
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

3‌. 性能调优参数‌:

nginx 复制代码
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;

注意事项

  1. 确保后端HTTPS服务证书有效,否则需设置proxy_ssl_verify off
  2. 如需同时支持HTTP/HTTPS对外访问,需分开配置监听端口
  3. 正向代理HTTPS需要特殊模块支持,反向代理无需额外模块
  4. 生产环境建议开启证书验证以提高安全性

这种配置模式常见于内部服务代理、API网关等场景,既能保证后端通信安全,又能简化前端配置

相关推荐
成为你的宁宁2 小时前
【Prometheus Operator监控K8S Nginx】
nginx·kubernetes·prometheus
abcy0712133 小时前
centos7 nginx代理kafka集群
nginx
大神15734 小时前
Jetty 6 HTTPS 配置指南
网络协议·https·jetty
難釋懷4 小时前
Nginx对上游服务器使用keepalive
服务器·nginx·github
2401_8346369914 小时前
Nginx 从入门到实战:静态 / 动态站点、PHP 部署与反向代理全解析
运维·nginx·php
回忆2012初秋17 小时前
【Nginx】优雅地走进高性能 Web 服务器世界(1)
服务器·前端·nginx
難釋懷18 小时前
Nginx-KeepAlive
运维·nginx
2401_8346369919 小时前
Keepalived + LVS (DR) + Nginx + NFS 高可用 Web 集群部署实战手册
前端·nginx·lvs
2601_955767421 天前
iPhone17屏幕偏振片减配的工程补救方案:圆偏振光与磁控溅射AR技术解析及悟赫德观复盾SGS数据验证
ar·iphone·圆偏振光护眼·iphone17护眼钢化膜·#观复盾护景贴
NCU_wander1 天前
LB HA(high avaliablity)和nginx
运维·nginx