logo NodeSeekbeta

sub2api安装-自用存档

环境安装与 Nginx 代理配置指南

1. 更新系统并安装依赖环境

首先,更新软件包列表并安装 PostgreSQL、Redis、Nginx 以及 Certbot 等必要组件:

Bash

sudo apt update
sudo apt install postgresql postgresql-contrib redis-server nginx certbot python3-certbot-nginx -y

2. 配置 PostgreSQL 数据库

设置 PostgreSQL 默认用户密码,并创建所需的数据库:

Bash

# 修改 postgres 用户密码
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '你的密码';"

# 创建名为 sub2api 的数据库
sudo -u postgres createdb sub2api

3. 配置 Nginx 反向代理 (HTTP)

创建并编辑 Nginx 站点配置文件:

Bash

sudo nano /etc/nginx/sites-available/example.com

将以下内容粘贴到文件中:

Nginx

server {
    # 监听 80 端口(普通 HTTP)
    listen 80;
    
    underscores_in_headers on;
    client_max_body_size 100m;
    
    # 你的域名
    server_name example.com;

    # 将所有请求转发到本地的 8080 端口
    location / {
        proxy_pass http://127.0.0.1:8080;

        # 携带真实的客户端信息给你的本地服务
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

保存并退出: > 在 nano 编辑器中,按 Ctrl + O 保存,敲击 Enter 确认,然后按 Ctrl + X 退出。

4. 启用配置并重启 Nginx

创建一个软链接以启用该配置,并测试语法:

Bash

# 创建一个软链接,告诉 Nginx 启用这个配置 (注意替换为你实际的配置文件名)
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

# 测试一下我们刚才写的配置文件有没有语法错误
sudo nginx -t

# 如果提示 test is successful,就重新加载 Nginx 让配置生效
sudo systemctl reload nginx

5. 申请并配置 SSL 证书 (HTTPS)

使用 Certbot 自动为域名申请证书并配置 Nginx:

Bash

sudo certbot --nginx -d example.com

6. 开启 HTTP/2 与添加安全响应头

再次编辑 Nginx 配置文件,进行性能优化和安全加固:

Bash

sudo nano /etc/nginx/sites-available/example.com

开启 HTTP/2

在配置文件中,找到被 Certbot 修改的这一行: listen 443 ssl; # managed by Certbot

将其修改为(加上 http2): listen 443 ssl http2; # managed by Certbot

注意: 可以使用 nginx -v 查看版本。如果 Nginx 版本在 1.25.1 以上,直接在后面加 http2 可能会提示语法弃用。如果后续测试报错,将其改回 listen 443 ssl; 并在下方另起一行写上 http2 on; 即可。

添加安全响应头 (TLS加固与HSTS)

server_name 这一行的下方,找个空位复制粘贴以下内容:

Nginx

# 1. 开启 HSTS,强制浏览器在 1 年内只使用 HTTPS 访问你的网站 (包含子域名)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

# 2. 防止网站被恶意嵌套在别人的 iframe 网页里 (防点击劫持)
add_header X-Frame-Options SAMEORIGIN;

# 3. 防止浏览器错误猜测文件类型 (防 MIME 类型嗅探攻击)
add_header X-Content-Type-Options nosniff;

# 4. 开启基础的跨站脚本(XSS)过滤器
add_header X-XSS-Protection "1; mode=block";

7. 最终测试与生效

保存修改后,再次测试并重载 Nginx:

Bash

# 1. 测试配置语法是否正确
sudo nginx -t

# 2. 重新加载 Nginx 让最新配置生效
sudo systemctl reload nginx

附录:完整的 HTTPS 配置文件示例

为了防止粘贴错位置,你的配置文件(HTTPS 部分)最终看起来应该大致像这样:

Nginx

server {
    server_name example.com; # 你的域名

    # === 我们刚才加的安全响应头 ===
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    # ==============================

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # === Certbot 自动生成的证书配置 ===
    listen 443 ssl http2; # 注意这里我们加了 http2
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

# 下面通常还有一个 server 块,是 Certbot 自动加的,用来把 80(HTTP) 强制定向到 443(HTTPS),保持原样即可。
server {
    if ($host = example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80;
    server_name example.com;
    return 404; # managed by Certbot
}
  • BD

  • 最简单的方案
    打开 codex,把项目地址粘贴给他,帮我部署这个项目。等待完成。

  • 我的评价是我脚本里有做一键部署 xhj003

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有60491位seeker

🎉欢迎新用户🎉