Nginx安装|Nginx反向|Nginx支持HTTPS

Linux命令

Nginx安装|Nginx反向|Nginx支持HTTPS

2025-03-20 00:03


? Nginx全栈实战指南(2024最新版) 一、Nginx安装与基础配置 1. 主流安装方式

                                            




? Nginx全栈实战指南(2024最新版)


一、Nginx安装与基础配置

1. 主流安装方式

# Ubuntu/Debian(APT源安装)
sudo apt install nginx-core=1.25.3-1~jammy -y

# CentOS/RHEL(EPEL源安装)
sudo dnf install nginx-1.25.3-1.el8

? 注意:2024年推荐使用1.25.x版本,支持HTTP/3协议

2. 源码编译安装

wget https://nginx.org/download/nginx-1.25.3.tar.gz
tar zxvf nginx-1.25.3.tar.gz
./configure --prefix=/usr/local/nginx \
            --with-http_ssl_module \
            --with-http_v3_module
make && sudo make install

? 核心参数说明:
--with-http_v3_module:启用HTTP/3支持
--prefix:指定安装路径

3. 服务管理命令

systemctl status nginx  # 查看服务状态
nginx -t               # 测试配置文件
nginx -s reload        # 热重载配置

二、反向代理深度配置

1. 基础反向代理

server {
    listen 80;
    server_name api.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;  # 转发到本机8080端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_connect_timeout 60s;  # 连接超时时间
    }
}

? 重点参数:
<font color='red'>proxy_set_header</font>:传递客户端真实信息
proxy_connect_timeout:避免后端服务无响应

2. 负载均衡配置

upstream backend {
    least_conn;  # 最小连接数算法
    server 10.0.1.10:8000 weight=5;  # 权重分配
    server 10.0.1.11:8000;
    keepalive 32;  # 长连接复用
}

server {
    location / {
        proxy_pass http://backend;
        proxy_http_version 1.1;  # 必须1.1以上支持keepalive
    }
}

⚖️ 负载策略对比:

  • round-robin:轮询(默认)
  • ip_hash:会话保持
  • least_conn:动态最优分配

三、HTTPS全站加密方案

1. 证书申请(Let's Encrypt示例)

sudo snap install --classic certbot
sudo certbot certonly --nginx -d example.com -d www.example.com

? 证书存储路径:
/etc/letsencrypt/live/example.com/

2. SSL基础配置

server {
    listen 443 ssl http2;  # 启用HTTP/2
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
  
    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;

    # 强制HSTS
    add_header Strict-Transport-Security "max-age=63072000" always;
}

? 安全强化建议:

  • 每90天更新证书(certbot renew --quiet
  • 使用OCSP装订提升性能

3. HTTP自动跳转HTTPS

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;  # 永久重定向
}

四、重定向高阶应用

1. 路径重写规则

# 旧版URL重定向
rewrite ^/old-page/(.*)$ /new-page/$1 permanent;

# 带参数重定向
rewrite ^/search/(.*)$ /result?keyword=$1? last;

? 标识符说明:

  • permanent:返回301永久重定向(SEO友好)
  • last:终止当前匹配,继续后续规则

2. 多域名统一跳转

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

3. 复杂条件判断

# 根据设备类型跳转
if ($http_user_agent ~* "(iPhone|Android)") {
    rewrite ^(.*)$ /mobile$1 break;
}

# 根据语言首选项跳转
map $http_accept_language $lang {
    default en;
    ~zh-CN zh;
}
server {
    rewrite ^/$ /$lang/ redirect;
}

五、性能调优参数

http {
    # 连接优化
    keepalive_timeout 75s;  # 保持连接时间
    keepalive_requests 1000;  # 单连接最大请求数
  
    # 缓冲区设置
    client_body_buffer_size 128k;
    client_header_buffer_size 4k;
  
    # 文件传输优化
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
}

? 调优效果:

  • 静态文件传输速度提升40%+
  • 减少30%的TCP握手次数

六、排错指南

1. 常见错误码处理

  • 502 Bad Gateway:检查后端服务端口和防火墙
  • 413 Request Entity Too Large:调整 
    标签:
    • Nginx
    • HTTPS
© 蓝易云.