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的配置真的很灵活,还有很多功能没探索完。继续加油!