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服务的能力。从一台服务器扩展到多台,这只是配置文件的变化。