AWS Lightsail Ubuntu环境下Docker+NGINX部署无法访问容器内Strapi求助
问题核心原因梳理
- Nginx服务未加入
apps自定义网络,无法解析strapi服务名,启动配置校验失败导致反复重启 - Nginx配置监听端口和docker-compose端口映射不匹配
- 反向代理配置未指定Strapi服务端口,默认访问80端口无法命中Strapi服务
- AWS Lightsail默认未开放对应端口的公网入站规则
修复步骤
1. 修改docker-compose.yml配置
调整Nginx服务配置,加入同服务网络,可选择关闭Strapi的公网端口暴露,仅允许Nginx内部访问:
version: '3.8' services: nginx: image: nginx:stable container_name: nginx volumes: - ./nginx/strapi.conf:/etc/nginx/conf.d/default.conf ports: - 80:80 restart: on-failure depends_on: - strapi # 加入apps网络才能解析strapi服务名 networks: - apps db: image: mariadb:10.6.4 container_name: db restart: always env_file: - envs/db.env volumes: - db-data:/var/lib/mysql networks: - apps strapi: image: strapi/strapi:3.6.8 container_name: strapi env_file: - envs/strapi.env restart: always depends_on: - db # 可注释掉端口暴露,仅内部网络访问更安全 # ports: # - 1337:1337 networks: - apps volumes: db-data: networks: apps: driver: bridge
2. 修改nginx/strapi.conf配置
调整监听端口,补全Strapi服务端口:
server { listen 80; server_name 1.20.20.20; location / { # 补全Strapi容器内服务端口1337 proxy_pass http://strapi:1337; proxy_http_version 1.1; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $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; proxy_set_header Host $http_host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_pass_request_headers on; } }
3. 重启服务
执行以下命令重启所有容器:
# 停止现有服务,不要加-v参数避免丢失数据库数据 docker-compose down # 后台启动服务 docker-compose up -d
Strapi首次启动需要初始化数据库,等待2-3分钟再访问。
4. 配置AWS Lightsail防火墙
进入Lightsail实例控制台的「网络」选项卡,添加入站规则:
- 协议:TCP
- 端口:80
- 源地址:0.0.0.0/0
验证&问题排查
- 正常访问地址:
http://1.20.20.20 - 查看Nginx运行日志:
docker logs nginx - 查看Strapi运行日志:
docker logs strapi - 实例内验证Strapi可用性:
curl http://localhost:1337
内容的提问来源于stack exchange,提问作者RRGT19
相关产品推荐
相关产品推荐

