用 Nginx 给静态网站做反向代理:思路、配置与新手避坑
自己写了一个静态网页,想让别人通过域名或者服务器地址访问,很多人第一反应是直接把文件扔到服务器上跑起来。其实中间加一层 Nginx 做反向代理,会稳妥很多。反向代理听起来很专业,核心就一句话:让 Nginx 站在前面接请求,再把请求转给真正提供网页的服务,用户不用直接面对后面的服务。
为什么要多这一层。第一个好处是统一入口。后面不管是一个静态文件夹,还是好几个不同的小服务,对外都只暴露 Nginx 的 80 或者 443 端口,地址看起来干净,也方便以后换服务不用换地址。第二个好处是出了问题好定位。请求先到 Nginx,日志里能看到请求有没有进来、转到哪里、返回了什么状态码,比直接面对后端服务更容易排查。第三个好处是以后加功能方便,比如想加缓存、限流或者 HTTPS,都是在 Nginx 这一层改,不用动后面的服务本身。
最简单的配置思路也很直白。先确认静态文件放在哪里,比如一个专门的文件夹,里面有 index.html。再写一个 server 块,监听 80 端口,server_name 写自己的域名或者服务器地址,location 里用 root 指向那个文件夹,或者用 proxy_pass 转给本地已经跑起来的静态服务。写完配置不要直接重启,先用 nginx -t 检查语法,语法没问题再重新加载配置,这样即使写错了也不会把正在跑的服务搞挂。改完之后用浏览器打开地址看一眼,再用 curl 看一下返回的状态码是不是 200,两个都对了才算真的通了。
新手最容易踩三个坑。第一个坑是路径写错,root 指向的文件夹里根本没有 index.html,结果打开是 403 或者 404。解决办法是先在服务器上 ls 看一眼文件到底在不在,再写配置。第二个坑是端口被占用,Nginx 启动失败,报错说地址已经在使用。这时候先查一下 80 端口到底被谁占了,是改掉冲突的服务,还是换一个监听端口,不要反复重启 Nginx 硬碰。第三个坑是改了配置没生效,因为只保存了文件、没有重新加载。每次改完配置,都要记得 reload 或者 restart,让 Nginx 重新读一遍配置,改完再验证一次,不要凭感觉认为已经生效了。
反向代理不需要一次配得很复杂。先跑通“一个域名、一个静态文件夹、能正常打开”这个最小版本,再慢慢加 HTTPS、缓存和多个 location。先把今天的静态页面通过 Nginx 对外打开,再去想怎么把它做得更安全、更快,这就是最稳妥的顺序。
- 点赞
- 收藏
- 关注作者
评论(0)