1Panel 环境下 OpenResty 新增站点配置指南

前提条件

  • 服务器已安装 1Panel 面板
  • OpenResty 通过 Docker 容器运行
  • 已有站点正常运行(如 web.quickpay.wang

第一步:确认 OpenResty 容器名称

1
docker ps | grep openresty

输出示例:

1
5f5a06597cca   1panel/openresty:1.27.1.2-5-1-focal   ...   1Panel-openresty-sWqr

做什么: 找到容器名称,记录下来(如 1Panel-openresty-sWqr),后续所有 docker exec 命令都需要用到。

为什么: 1Panel 的 OpenResty 运行在 Docker 容器内,不能直接用宿主机的 nginx 命令,必须通过 docker exec 进入容器操作。容器名在重启后可能变化,每次操作前建议重新确认。


第二步:创建站点目录并放入文件

1
2
3
4
5
6
7
8
# 创建站点目录(宿主机路径)
mkdir -p /opt/1panel/www/preview

# 复制网站文件到该目录
cp -r /root/projrects/qt-browser/prototype/* /opt/1panel/www/preview/

# 确认文件已就位
ls -la /opt/1panel/www/preview/

做什么: 在宿主机的 /opt/1panel/www/ 下创建一个子目录(如 preview),并将网站文件放进去。

为什么: /opt/1panel/www/ 是 OpenResty 容器的网站根目录映射。容器内看到的路径是 /www/,宿主机看到的是 /opt/1panel/www/。在这个目录下创建子文件夹,就相当于在网站根目录下创建了子路径。

对应关系:

宿主机路径容器内路径
/opt/1panel/www/preview//www/preview/
/opt/1panel/www/conf.d//usr/local/openresty/nginx/conf/conf.d/

第三步:编写 Nginx 配置文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
cat > /opt/1panel/www/conf.d/preview.quickpay.wang.conf << 'EOF'
server {
    listen 8025;
    listen [::]:8025;
    server_name preview.quickpay.wang;

    root /www/preview;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
EOF

做什么:/opt/1panel/www/conf.d/ 下创建一个以域名命名的 .conf 文件,写入 Nginx 的 server 块配置。

为什么: OpenResty 的主配置 nginx.conf 中有 include /usr/local/openresty/nginx/conf/conf.d/*.conf;,会自动加载该目录下所有 .conf 文件。放在 conf.d/ 下的配置会自动生效,无需修改主配置。

配置说明:

指令含义
listen 8025监听 8025 端口
server_name preview.quickpay.wang匹配该域名的请求
root /www/preview网站文件在容器内的路径
try_files $uri $uri/ =404按顺序查找文件,找不到返回 404

第四步:测试配置语法

1
docker exec 1Panel-openresty-sWqr nginx -t

做什么: 检查刚写的配置文件是否有语法错误。

为什么: 如果配置有误(比如少分号、路径错误),直接重载会导致整个 OpenResty 停止服务,影响所有已运行的网站。先测试再重载是必须的安全步骤。

正确输出:

1
2
nginx: the configuration file /usr/local/openresty/nginx/conf/nginx.conf syntax is ok
nginx: the configuration file /usr/local/openresty/nginx/conf/nginx.conf test is successful

如果报错: 检查 .conf 文件中的拼写、分号、括号是否正确,修复后重新测试。


第五步:重载配置使其生效

1
docker exec 1Panel-openresty-sWqr nginx -s reload

做什么: 通知 OpenResty 重新加载所有配置文件,新站点开始生效。

为什么: reload 是平滑重载,不会中断已有连接。与 restart 不同,reload 只是让主进程读取新配置,已有请求会正常处理完毕。这是生产环境推荐的方式。

验证是否生效:

1
2
3
4
5
# 检查端口是否开始监听
ss -tlnp | grep 8025

# 测试页面能否访问
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:8025/index.html

返回 200 表示配置成功。


第六步:放行端口(如需要)

如果服务器有防火墙或云平台安全组,需要放行 8025 端口:

1
2
3
4
5
# 防火墙放行(如有)
sudo ufw allow 8025/tcp

# 或 iptables
sudo iptables -A INPUT -p tcp --dport 8025 -j ACCEPT

同时在云平台控制台(阿里云/腾讯云/AWS 等)的安全组中添加入站规则,允许 TCP 8025 端口。

为什么: 即使 Nginx 配置正确,如果端口未放行,外部请求无法到达服务器,浏览器会显示"连接超时"。


访问验证

浏览器打开:

1
http://preview.quickpay.wang:8025

完整操作流程(复制粘贴版)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 1. 确认容器名
docker ps | grep openresty

# 2. 创建站点目录并放入文件
mkdir -p /opt/1panel/www/preview
cp -r /root/projrects/qt-browser/prototype/* /opt/1panel/www/preview/

# 3. 写入 Nginx 配置
cat > /opt/1panel/www/conf.d/preview.quickpay.wang.conf << 'EOF'
server {
    listen 8025;
    listen [::]:8025;
    server_name preview.quickpay.wang;

    root /www/preview;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
EOF

# 4. 测试配置
docker exec 1Panel-openresty-sWqr nginx -t

# 5. 重载生效
docker exec 1Panel-openresty-sWqr nginx -s reload

# 6. 验证
ss -tlnp | grep 8025
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:8025/index.html

常见问题

问题原因解决
nginx -t 报错配置文件语法错误检查分号、括号、路径
端口未监听配置未重载或容器名错误重新确认容器名并 reload
外部无法访问防火墙/安全组未放行放行对应端口
403 Forbidden目录权限或 index 文件缺失检查文件权限和目录结构
404 Not Foundroot 路径写错确认容器内路径为 /www/xxx