本教程详细介绍如何在宝塔面板中配置 Nginx 反向代理、静态资源服务,以及部署 Let’s Encrypt 免费 SSL 证书和自动续期功能。

宝塔面板中配置您提供的 Nginx 反向代理和静态资源服务,可以按照以下步骤操作。下面的流程图汇总了核心配置步骤,帮助您快速了解整体流程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
flowchart TD
A[开始配置] --> B[登录宝塔面板<br>创建或选择站点]
B --> C{配置目标}
C -->|反向代理| D[配置反向代理]
C -->|静态资源| E[配置静态资源]

D --> D1[添加反向代理规则]
D1 --> D2[自定义代理名称和目标URL]
D2 --> D3[高级配置中添加<br>proxy_set_header等参数]

E --> E1[修改网站根目录]
E1 --> E2[设置默认文档]
E2 --> E3[添加try_files指令]

D3 --> F[保存并重启Nginx]
E3 --> F
F --> G[配置完成]

🔧 配置反向代理 (location ^~ /asapi)

  1. 登录宝塔面板,进入【网站】页面,找到您的站点,点击右侧的【设置】。

  2. 在站点设置中,找到并点击【反向代理】选项卡,然后点击【添加反向代理】。

  3. 在添加反向代理的界面中:

    • 代理名称​:可以自定义,例如 asapi_proxy
    • 目标URL​:填写 http://127.0.0.1:7001
  4. 点击【提交】后,宝塔会自动生成一个基础的反向代理配置。为了匹配您提供的配置,您可能需要点击【配置文件】选项卡,找到自动生成的 /asapi相关配置块,手动添加上其他 proxy_set_header等参数,或者直接在反向代理设置的高级配置中进行添加 。确保最终的配置包含以下关键指令 :

    location ^~ /asapi {
        proxy_pass http://127.0.0.1:7001;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host   $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_set_header Connection "";
        proxy_http_version 1.1;
    }
    

📁 配置静态资源服务 (location /web)

宝塔面板的图形界面主要简化了反向代理配置,对于使用 alias指令的静态资源映射,通常需要直接编辑配置文件来实现。

  1. 在站点的设置中,点击【配置文件】选项卡。

  2. 在 server块内,找到或添加 location /web的配置部分。您可能需要注释掉或调整宝塔面板自动生成的与根目录 /相关的 location块,以避免规则冲突。

  3. 将您提供的配置粘贴或修改到合适的位置:

    location /web {
        alias /www/wwwroot/smartfarm/web/; # 请确保此路径正确且宝塔面板的www用户有权访问
        index index.html;
        try_files $uri $uri/ /web/index.html; # 用于支持前端路由的history模式
    }
    

    关键提示​:

    • 路径权限​:请确认路径 /mnt/projects/smart-farm/web/存在,并且宝塔面板运行Nginx的用户(通常是www)拥有读取权限 。
    • 历史模式路由​:try_files $uri $uri/ /web/index.html;这行配置对于使用 history 模式的前端路由框架(如 Vue Router、React Router)至关重要,它确保在直接访问非首页URL时能正确返回 index.html

✅ 最终检查

配置完成后,请务必执行以下操作:

  • 点击配置文件编辑器上方的【保存】按钮。
  • 在宝塔面板的首页或软件管理中找到Nginx服务,执行【重载配置】或【重启】,使修改生效 。
  • 重载或重启后,检查Nginx状态是否正常运行。如果启动失败,请查看【网站】日志或Nginx错误日志(通常在 /www/wwwlogs/目录下,以您的域名-error.log命名)来排查语法或路径错误 。

🔧 部署免费SSL证书

首先,您需要为网站申请并部署一张SSL证书。宝塔面板内置了对 ​Let‘s Encrypt​ 免费证书的支持,整个过程非常便捷。

  1. 前提准备​:确保您的域名已经正确解析到当前服务器的IP地址,并且网站可以通过HTTP正常访问。

  2. 申请证书​:

    • 登录宝塔面板,进入【网站】列表,点击目标网站右侧的【设置】。
    • 切换到【SSL】选项卡,在证书服务中选择 ​​“Let’s Encrypt”​​ 。
    • 勾选您需要绑定的域名(例如 example.com和 www.example.com)。
    • 选择验证方式。如果您希望申请通配符证书(支持所有子域名)或为自动化续期打下最可靠的基础,强烈推荐使用 ​DNS验证​(如阿里云DNS、Cloudflare等)。如果您的域名解析已生效且80端口畅通,也可以使用简单的文件验证。
    • 点击【申请】或【验证】,系统会自动完成域名验证、证书申请和配置工作。
  3. 开启强制HTTPS​:证书部署成功后,建议在SSL设置页面勾选【强制HTTPS】选项,这样所有HTTP请求都会被自动重定向到安全的HTTPS连接。

⚙️ 配置自动续期

Let‘s Encrypt证书的有效期为90天,因此设置自动续期至关重要。宝塔面板提供了两种主要方式来实现这一点。

  • 方式一:利用面板内置的自动续签功能

    当您通过宝塔面板成功申请Let’s Encrypt证书后,系统默认会创建一条自动续签计划任务。您可以在面板左侧导航栏点击【计划任务】,检查是否存在名为“续签Let‘s Encrypt证书”的任务。该任务通常会定期(如每天)检查证书并在到期前约30天自动续签。

  • 方式二:手动创建或验证计划任务(更可靠)​

    如果内置任务不存在或您希望更主动地管理,可以手动添加一条Shell脚本任务,这是确保自动续期生效的最可靠方法。

    1. 进入【计划任务】。

    2. 【任务类型】选择 “Shell脚本”。

    3. 【执行周期】可以设置为每天或每周执行一次。

    4. 在【脚本内容】中填入以下命令:

      /www/server/panel/pyenv/bin/python3 -u /www/server/panel/class/acme_v2.py --renew=1
      
    5. 点击【添加任务】即可。

    对于使用DNS验证方式申请证书的用户,为了确保自动续期脚本有权限自动更新DNS记录,您需要提前在宝塔面板的SSL设置中配置好DNS服务商的API密钥(如阿里云的AccessKey ID和Secret)。

link