前提条件
- 服务器已安装 1Panel 面板
- OpenResty 通过 Docker 容器运行
- 已有站点正常运行(如
web.quickpay.wang)
第一步:确认 OpenResty 容器名称
| |
输出示例:
| |
做什么: 找到容器名称,记录下来(如 1Panel-openresty-sWqr),后续所有 docker exec 命令都需要用到。
为什么: 1Panel 的 OpenResty 运行在 Docker 容器内,不能直接用宿主机的 nginx 命令,必须通过 docker exec 进入容器操作。容器名在重启后可能变化,每次操作前建议重新确认。
第二步:创建站点目录并放入文件
| |
做什么: 在宿主机的 /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 配置文件
| |
做什么: 在 /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 |
第四步:测试配置语法
| |
做什么: 检查刚写的配置文件是否有语法错误。
为什么: 如果配置有误(比如少分号、路径错误),直接重载会导致整个 OpenResty 停止服务,影响所有已运行的网站。先测试再重载是必须的安全步骤。
正确输出:
| |
如果报错: 检查 .conf 文件中的拼写、分号、括号是否正确,修复后重新测试。
第五步:重载配置使其生效
| |
做什么: 通知 OpenResty 重新加载所有配置文件,新站点开始生效。
为什么: reload 是平滑重载,不会中断已有连接。与 restart 不同,reload 只是让主进程读取新配置,已有请求会正常处理完毕。这是生产环境推荐的方式。
验证是否生效:
| |
返回 200 表示配置成功。
第六步:放行端口(如需要)
如果服务器有防火墙或云平台安全组,需要放行 8025 端口:
| |
同时在云平台控制台(阿里云/腾讯云/AWS 等)的安全组中添加入站规则,允许 TCP 8025 端口。
为什么: 即使 Nginx 配置正确,如果端口未放行,外部请求无法到达服务器,浏览器会显示"连接超时"。
访问验证
浏览器打开:
| |
完整操作流程(复制粘贴版)
| |
常见问题
| 问题 | 原因 | 解决 |
|---|---|---|
nginx -t 报错 | 配置文件语法错误 | 检查分号、括号、路径 |
| 端口未监听 | 配置未重载或容器名错误 | 重新确认容器名并 reload |
| 外部无法访问 | 防火墙/安全组未放行 | 放行对应端口 |
| 403 Forbidden | 目录权限或 index 文件缺失 | 检查文件权限和目录结构 |
| 404 Not Found | root 路径写错 | 确认容器内路径为 /www/xxx |