雨云云服务器 Nginx 进阶:HTTPS 证书、多站点反代与缓存优化实战

一台雨云云服务器用一个端口托管多个站点,并全部上 HTTPS 提速
发布于
8

为什么 Nginx 值得单独进阶

前面部署 Python 后端时我们已经用 Nginx 做过一次反向代理,但那只是入门。真正把它用好,能在一台雨云云服务器上用一个 80/443 端口托管多个域名、统一上 HTTPS、给静态资源加缓存让网站快一倍。本文把这几件事一次讲清。

一、准备与购买

反代多个站点对配置要求不高,1 核 2G 足够小流量跑几个站。系统 Ubuntu 22.04,装好 Nginx(sudo apt install -y nginx)。购买走 雨云专属入口 jiyueip.com/link/5617 填优惠码 admin01 五折。国内节点对外提供网页服务须先完成 ICP 备案。

二、免费 SSL 证书与 HTTPS

用 Let’s Encrypt 免费证书最省事:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your.domain.com

按提示填邮箱、同意条款,证书会自动签发并写入 Nginx 配置,访问 https 就绿了。证书 90 天有效,certbot 默认装了自动续期任务,不用手动管。

三、一台机器托管多个站点

在 /etc/nginx/sites-available/ 下为每个域名建一个配置文件,都监听 80/443,用 server_name 区分。每个站反代到不同本地端口:

server {
    listen 443 ssl;
    server_name a.com;
    location / { proxy_pass http://127.0.0.1:8000; }
}
server {
    listen 443 ssl;
    server_name b.com;
    location / { proxy_pass http://127.0.0.1:8001; }
}

软链到 sites-enabled,nginx -t 检查语法后 systemctl reload nginx,两个域名就分别生效了。

四、缓存与 Gzip 提速

给图片、CSS、JS 等静态资源加缓存头,浏览器和 CDN 就不用反复拉:

location ~* .(jpg|css|js|png)$ {
    expires 30d;
    add_header Cache-Control "public";
}

开启 Gzip:在 http 段加 gzip on; gzip_types text/css application/javascript;,传输体积能小一半。注意只压缩文本类,图片视频本身就压过别重复压。

五、常见问题

  • 证书续期失败:多半是域名没解析到这台服务器或 80 端口被挡,先确认 DNS 和安全组。
  • 多个站串了:检查 server_name 是否写错,Nginx 会按匹配度选,默认落到第一个。
  • 反代后拿不到真实 IP:加 proxy_set_header X-Real-IP $remote_addr; 并在后端读取该头。

合规使用提醒

Nginx 配置仅用于你合法拥有和备案的域名与站点。不得利用多站点反代搭建违法违规内容分发或绕过监管的服务。HTTPS 证书用于保护传输安全,请合规使用加密技术。

常见问题(FAQ)

证书到期前要手动续吗?
Let's Encrypt 免费证书有效期 90 天,certbot 安装时默认写入系统的 certbot renew 定时任务,一般会自动续期。你也可以手动跑 certbot renew 测试。
多个站点会互相串吗?
不会串。Nginx 靠 server_name 精确匹配域名,请求头里的 Host 对上哪个就走哪个。只有完全不匹配时才落到默认第一个,所以默认站别放敏感内容。
缓存和 Gzip 对图片有用吗?
Gzip 只压文本(HTML/CSS/JS/JSON),图片视频本身已压缩,再压收益低还费 CPU。缓存头加在静态资源上让浏览器和 CDN 少回源就行。
一台机器能挂多个 HTTPS 域名吗?
一个 443 端口可以用 SNI 扩展承载多个 HTTPS 域名,每个域名配自己的证书即可,不需要多个 IP。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600