我的博客

Nginx反向代理配置详解

这个月终于把Nginx给折腾明白了!从最开始的完全不懂,到能够自己配置反向代理和SSL证书,真的学到了很多。

为什么需要反向代理

一开始我直接在服务器上运行Web服务,但后来遇到这些问题:

  • 80端口被占用
  • 不会配置HTTPS
  • 想在一个服务器上运行多个网站

于是开始学习Nginx,发现它真的太强大了!

基础配置学习

server {
    listen 80;
    server_name example.com;
    
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

学到了:

  • server块:定义一个虚拟主机
  • location:匹配URL路径
  • proxy_pass:反向代理配置
  • proxy_set_header:传递请求头

SSL配置

用Let's Encrypt免费证书实现了HTTPS:

server {
    listen 443 ssl http2;
    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;
    
    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

遇到的坑

配置过程中踩了不少坑:

  • SSL证书路径写错了,网站一直打不开
  • 忘记开放443端口,HTTPS访问不了
  • proxy_pass后面的斜杠会导致路径重写问题
  • nginx -t 测试通过了,但reload后配置没生效

收获

现在可以:

  • 配置多个域名指向不同服务
  • 设置SSL证书
  • 配置负载均衡
  • 设置缓存策略

Nginx的配置真的很灵活,还有很多功能没探索完。继续加油!