Nginx 入门:反向代理与静态网站部署

举报
yd_294192959 发表于 2026/11/06 06:10:05 2026/11/06
【摘要】 当我们把一个静态网站做好之后,第一个问题往往不是写代码,而是怎么把它稳定地交给访问者。Nginx 就是最常用的答案之一。它轻量、稳定、配置简单,既能直接托管静态文件,也能作为反向代理,把请求转发给后端服务。 一、什么是反向代理平时我们访问网站,浏览器以为自己在和 Nginx 打交道,实际上 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 很快就能成为你手里最顺手的部署工具。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。