Nginx 反向代理配置实战指南

Nginx 反向代理详解

Nginx是当前最流行的Web服务器,反向代理是它最核心的功能之一。

什么是反向代理?

反向代理就是服务器代理后端应用接收客户端请求。外部用户通过Nginx访问,Nginx再把请求转发给内部服务。

基础配置

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

配置HTTPS

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto https;
    }
}

负载均衡

upstream myapp {
    server 127.0.0.1:3000;
    server 127.0.0.1:3001;
    server 127.0.0.1:3002;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://myapp;
    }
}

常见配置技巧

配置静态资源缓存

location ~* \.(js|css|png|jpg|svg)$ {
    expires 7d;
    add_header Cache-Control "public, immutable";
}

开启Gzip压缩

gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 1024;
gzip_comp_level 6;

总结

掌握Nginx反向代理,你就拥有了部署任何Web服务的能力。从一台服务器扩展到多台,这只是配置文件的变化。