LightSNS 程序已就位,还差最后一步:配置反向代理

你现在看到的是站点根目录里的这份说明,不是 LightSNS 的首页 —— 说明 nginx 还在把这个站点当成一个普通的静态目录,反代配置没有生效,请求一条都没交给 LightSNS。
把下面这段配置粘进你站点的 nginx 配置、重启 nginx,刷新这一页就是安装向导。
(这份文件出现之前,这一步没做的表现是打开站点直接一个 403 Forbidden:站点根目录下没有索引文件,nginx 只能拒绝。)

照这几步做

① 先清空站点的伪静态:宝塔在「网站 → 设置 → 伪静态」,把编辑框里的内容全选删掉再保存。
   要的是内容为空,不是在下拉里选「无」—— 选了「无」,编辑框里原来那份规则还在。
   面板「反向代理」里加过的条目也一并删掉,那同样是一条 location /。
② 打开你站点的 nginx 配置文件(宝塔 / 1Panel 里点「配置文件」就是它)
③ 第一段(upstream 那一块)粘在文件最上面,server 那一块之前
④ 第二段粘进 server { } 里面,保存
⑤ 重启 nginx(宝塔 / 1Panel 面板里点一下重启即可)
⑥ 浏览器打开站点域名 —— 安装向导就在首页

注意事项
· 顺序不能反:nginx 没配好之前站点域名打不开,向导也就打不开。
· 粘的是站点自己那份配置,不是 Nginx 软件的主配置(宝塔的软件商店里那个)。
  判据:你打开的那个文件里必须看得见你自己的域名(server_name 那一行)。
  粘错了的表现是按服务器 IP 能打开、按域名打不开,而且两边都不报错。
· 报 host not found in upstream "lightsns_business":第一段没粘,
  或者粘进 server { } 里面了。
· 报 duplicate location "/":伪静态没清空,或者面板的反向代理里还留着条目 —— 回第 ① 步。
· 报 duplicate upstream:第一段粘了两遍,全机只留一份。

要粘的配置

# ── LightSNS ── 分两段粘,位置不一样,别粘反
#
# 【第一段】粘在这个文件的最上面,server 那一块之前 —— 不是里面。
# nginx 只允许 upstream 待在 http 层,粘进 server { } 里 nginx 直接起不来。
upstream lightsns_business {
    server 127.0.0.1:8790;
    # 每个 nginx worker 进程常驻这么多条空闲连接。
    keepalive 64;
}

# 【第二段】以下全部粘进 server { } 里面。

client_max_body_size 1024m;

# 转发头写在 location 外面,下面每个块自动继承。
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 清空这个头,上面那个连接池才生效 —— 判据见 upstream 那一段的注释。
proxy_set_header Connection "";
proxy_read_timeout 600s;
proxy_send_timeout 600s;

# 实时通道走独立端口。这一块自己带转发头(本级一有 proxy_set_header,
# 上面那组就整组不再继承),转错了私信通知点赞会静默失效。
location = /realtime {
    proxy_pass http://127.0.0.1:2347;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_read_timeout 86400s;
    proxy_send_timeout 86400s;
    proxy_buffering off;
}

# 下面六段必须是 ^~:面板建站自带的扩展名正则会把这些路径抢去当磁盘
# 文件直出,权限不合就是 403 且不写日志。^~ 压过所有正则,与粘贴位置
# 无关;合并成一条正则就等于把那个 403 请回来,别省这六行。
location ^~ /pc/ { proxy_pass http://lightsns_business; }
location ^~ /mb/ { proxy_pass http://lightsns_business; }
location ^~ /static/ { proxy_pass http://lightsns_business; }
location ^~ /admin/ { proxy_pass http://lightsns_business; }
location ^~ /uploads/ { proxy_pass http://lightsns_business; }
location ^~ /module/ { proxy_pass http://lightsns_business; }

# 其余全部交给应用。缓冲保持默认开着,不要关。
location / { proxy_pass http://lightsns_business; }

粘完刷新还是这一页

这份文件由 lightsns-supervisor install 写在站点根目录下,文件名 index.html,每次重跑 install 都会刷新成当前版本的配置。同一份配置在官网 https://lightsns.com/docs 的装机教程 1.4 节也有,两处是同一个来源。反代配好之后所有请求都交给 LightSNS,nginx 不再打开站点目录下的任何文件,这一页也就永远不会再出现。