Nginx 入门:反向代理与静态网站部署
当我们把一个静态网站做好之后,第一个问题往往不是写代码,而是怎么把它稳定地交给访问者。Nginx 就是最常用的答案之一。它轻量、稳定、配置简单,既能直接托管静态文件,也能作为反向代理,把请求转发给后端服务。
一、什么是反向代理
平时我们访问网站,浏览器以为自己在和 Nginx 打交道,实际上 Nginx 在背后把请求转给了真正的应用服务器,再把响应原样带回来。客户端看不到后端地址,后端也不必直接暴露在公网之外。反向代理因此天然适合做统一入口:一个域名、一个 80 或 443 端口,后面可以挂多个服务。
和正向代理不同,正向代理是替客户端去访问外部资源,反向代理是替服务器接收外部请求。记住这个方向,就不会再混淆。
二、用 Nginx 部署静态网站
最简单的办法,是把打包好的 HTML、CSS、JS 放到服务器目录,例如 /usr/share/nginx/html,然后写一个 server 块:
server {
listen 80;
server_name example.com;
root /usr/share/nginx/html;
location / {
try_files $uri $uri/ /index.html =404;
}
}
try_files 的作用是先找真实文件,找不到再返回首页,这样单页应用刷新深层路由也不会 404。改完配置先用 nginx -t 检查语法,再用 nginx -s reload 平滑重载,不用停服务。第一次部署建议先访问首页,再逐个检查图片、样式和接口地址。
三、反向代理的基本配置
如果网站还有后端接口,可以再加一个 location /api/,把请求转发到本地后端:
location /api/ {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
把真实客户端 IP 透传给后端,日志和限流才准确。需要提醒的是,proxy_pass 后面带不带斜杠,含义并不相同,复制配置时要逐字核对。静态资源还可以再加 expires 缓存头,减少重复请求。
四、新手常见的三个坑
第一,改了配置没有重载,访问的还是旧配置;第二,防火墙或安全组没有放行 80、443 端口,本地能访问、公网却打不开;第三,文件权限不对,Nginx 进程读不到静态目录,页面报 403。遇到问题先看 error_log,多数原因都在日志里写得很清楚。
五、小结
对入门者来说,记住两条主线就够了:静态网站用 root 加 try_files 直接托管,动态接口用 location 加 proxy_pass 转发。先把一个静态站点跑通,再逐步加上反向代理、缓存和 HTTPS,一次只改一处,改完就验证,Nginx 很快就能成为你手里最顺手的部署工具。
- 点赞
- 收藏
- 关注作者
评论(0)