Nginx 反向代理到 HTTPS一台服务器跑多个网站

举报
yd_218239968 发表于 2026/10/25 20:56:42 2026/10/25
【摘要】 网站部署好却不知道怎么让它对外访问,或者一台服务器想同时跑两个网站,很多人就卡在这里。Nginx 就是专门干这件事的工具:它站在用户和你的程序中间,负责接请求、转发、返回静态文件。本文从最简单的反向代理讲起,到多站点配置和 HTTPS,一套流程照抄就能用。很多新手部署网站时有个误解:程序跑起来就等于能访问了。其实程序一般只监听本地端口,比如 3000、8000,外面是访问不到的,中间需要一个...

网站部署好却不知道怎么让它对外访问,或者一台服务器想同时跑两个网站,很多人就卡在这里。Nginx 就是专门干这件事的工具:它站在用户和你的程序中间,负责接请求、转发、返回静态文件。本文从最简单的反向代理讲起,到多站点配置和 HTTPS,一套流程照抄就能用。

很多新手部署网站时有个误解:程序跑起来就等于能访问了。其实程序一般只监听本地端口,比如 3000、8000,外面是访问不到的,中间需要一个“门面”来接外部请求、转发给程序,Nginx 就是这个门面,它轻、稳、配置也直观。

先说最简单的反向代理。假设你的程序跑在本地 3000 端口,Nginx 配置只要写一个 server 块,把收到的请求转发过去:



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

listen 是监听端口,server_name 是域名,location / 表示所有路径都按这条规则走,proxy_pass 就是转发地址。后面两行是把真实域名和访客 IP 传给后端程序,不写的话程序拿到的是 Nginx 自己的地址,日志和限流都会不准。写好配置后先跑 nginx -t 检查语法,没问题再用 nginx -s reload 平滑重载,比重启服务更稳妥,在线访客基本无感。

一台服务器跑多个网站也很简单:每个网站写一个独立的 server 块,server_name 分别填各自的域名,proxy_pass 或 root 指向各自的目录和端口,Nginx 会按访问时用的域名自动分流。一个网站出问题,改它自己的配置文件就行,不会影响其他站点。

静态网站就更简单了,不用转发,直接用 root 指定文件目录:



server {    listen 80;    server_name static.example.com;    root /var/www/static;    index index.html;}

用户访问域名,Nginx 就直接把目录里的 index.html 返回去,图片、CSS、JS 同理,速度快还省程序资源。

接下来是 HTTPS,现在网站没有 HTTPS 浏览器会直接标不安全。用 Certbot 申请免费证书最省事,装好后一条命令就能签发并自动改好 Nginx 配置,把 80 的请求重定向到 443。证书有效期 90 天,Certbot 会自动续期,不用你每三个月手动换一次。配完记得用浏览器无痕模式访问一次确认,顺便检查 80 有没有正确跳到 443。

最后说两个新手最常遇到的报错。第一个是 502 Bad Gateway,意思是 Nginx 收到了请求,但转发过去没人接,通常是后端程序没启动,或者端口写错了,先看程序在不在跑,再对一下 proxy_pass 的端口。第二个是改完配置不生效,九成是没有重载,或者改错了配置文件——Nginx 默认主配置在 /etc/nginx/nginx.conf,站点配置一般在 sites-enabled 或 conf.d 里,改之前先确认你改的是正在被加载的那一份。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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