如何安装 Nginx以及应用

发布于 11 天前  18 次阅读


本教程以Alist为例。

如果你还没有安装 Nginx 和用于自动获取 SSL 证书的 Certbot,请先执行以下命令(以 Ubuntu/Debian 为例):

sudo apt update
sudo apt install nginx python3-certbot-nginx -y

第二步:配置 Nginx 反向代理

1.我们需要创建一个新的 Nginx 配置文件。假设你的域名是 alist.example.com

创建配置文件:

sudo nano /etc/nginx/sites-available/alist

2.写入以下配置: 注意:这里先配置 80 端口,稍后 Certbot 会自动帮我们升级到 443 (HTTPS)。

server {
    listen 80;
    server_name alist.example.com; # 换成你的域名

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Range $http_range;
        proxy_set_header If-Range $http_if_range;
        proxy_redirect off;
        proxy_pass http://127.0.0.1:5244;

        # 上传大文件所需的配置
        client_max_body_size 0;
    }
}

3.激活配置并重启:

sudo ln -s /etc/nginx/sites-available/alist /etc/nginx/sites-enabled/
sudo nginx -t  # 检查语法是否正确
sudo systemctl restart nginx

第三步:获取 SSL 证书 (HTTPS)

使用 Let's Encrypt 提供的 Certbot,可以一键完成 SSL 部署和自动续期。

执行以下命令:

sudo certbot --nginx -d alist.example.com

过程中提示: 它会询问是否要将 HTTP 重定向到 HTTPS,建议选择 2: Redirect

结果: Certbot 会自动修改你的 Nginx 配置文件,添加证书路径并开启 443 端口。

第四步:关键细节检查

为了确保 Alist 在反向代理下工作完美,请注意以下两点:

  1. client_max_body_size: 在上面的配置中,设置了 0。这是为了防止通过网页版 Alist 上传大文件时被 Nginx 拦截(默认只有 1MB)。
  2. Alist 后台设置: 登录 Alist 后台,进入 设置 -> 侧边栏 -> 全局,确保 站点地址 填写的是你带 https:// 的完整域名。

进阶提示:防火墙设置

如果访问不通,请检查服务器防火墙是否放行了 80 和 443 端口:

sudo ufw allow 'Nginx Full'

(如果要应用在WordPress上,将 location / 部分修改为如下内容:

1.修改 Nginx 配置文件

location / {
        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; # 必须!告知 WP 当前是 HTTPS
        
        proxy_pass http://127.0.0.1:8080; # 指向你的 WordPress 端口

        # 允许上传大文件(如主题、插件、媒体文件)
        client_max_body_size 100M;
    }

为什么要加 X-Forwarded-Proto 因为 Nginx 和用户之间是 HTTPS,但 Nginx 和 WordPress 之间是 HTTP。如果不传这个 Header,WordPress 会以为自己还在用 HTTP,从而导致网页资源加载错误或无限重定向。

2.测试并重启 Nginx

sudo nginx -t
sudo systemctl restart nginx

如果你已经能进入 WordPress 后台,请确保:

设置 (Settings) -> 常规 (General) WordPress 地址 (URL)站点地址 (URL)改为域名


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。