Rails 有没有人遇到过 Rails 随机跳过 Passenger + Nginx 造成 404 的情况?

wangm23456 · 2018年12月25日 · 最后由 wangm23456 回复于 2018年12月25日 · 750 次阅读

我在集群上部署了一个 rails 项目(https://github.com/opf/openproject.git) 用 passenger(5.3.3)+nginx 做代理,用了 passenger_base_uri 参数来 remove 最前面的 suburl(/openproject),结果发现随机地出现 rails 收到带/openproject 请求的情况,然后就造成随机地 404,但是只要刷新一下就又没有问题了。有人和我一样吗?

我把项目打包了 docker:wangm23456/openproject:cesv60

passenger 启动:

#!/bin/bash -e

BIND="${BIND:=0.0.0.0}"
PORT="${PORT:=8080}"
RAILS_ENV="${RAILS_ENV:="production"}"
MIGRATE="${MIGRATE:="true"}"
MIN_INSTANCES="${PASSENGER_MIN_INSTANCES:=5}"
MAX_INSTANCES="${PASSENGER_MAX_INSTANCES:=10}"
SPAWN_METHOD="${PASSENGER_SPAWN_METHOD:=smart}"

if [ "$MIGRATE" = "true" ]; then
    echo "Migrating database..."
    bundle exec rake db:migrate db:seed db:structure:dump
fi

exec bundle exec passenger start \
    -p $PORT \
    -a "${BIND}" \
    --min-instances "$MIN_INSTANCES" \
    --max-pool-size "$MAX_INSTANCES" \
    --spawn-method "$SPAWN_METHOD" \
    --nginx-config-template "docker/nginx.conf.erb" \
    --max-preloader-idle-time 0

passenger 的 nginx 模板就是https://github.com/opf/openproject/blob/dev/docker/nginx.conf.erb 的第二个 server 里面加了一个 passenger_base_uri /openproject;

需要 登录 后方可回复, 如果你还没有账号请 注册新账号