使用NGINX作为反向代理,通过使用docker将结果写入重写或内部重定向循环来运行Directus

使用NGINX作为反向代理,通过使用docker将结果写入重写或内部重定向循环来运行Directus,docker,nginx,docker-compose,reverse-proxy,directus,Docker,Nginx,Docker Compose,Reverse Proxy,Directus,使用docker compose(如所述)和NGINX(作为代理)安装Directus 文件docker compose.yaml NGINX配置文件 文件directus.conf 当http://localhost:9090 使用相同的via时,请正常工作http://localhost:8080 HTTP 5xx内部服务器错误的结果 nginx报告 [错误]2#2:*6内部重定向到“/index.php”时的重写或内部重定向周期,客户端:172.26.0.1,服务器:localhost:9

使用docker compose(如所述)和NGINX(作为代理)安装Directus

文件docker compose.yaml

NGINX配置文件

文件directus.conf

当http://localhost:9090 使用相同的via时,请正常工作http://localhost:8080 HTTP 5xx内部服务器错误的结果

nginx报告

[错误]2#2:*6内部重定向到“/index.php”时的重写或内部重定向周期,客户端:172.26.0.1,服务器:localhost:9090,请求:“GET/favicon.ico HTTP/1.1”,主机:“localhost:8080”,引用者:http://localhost:8080/"


我已经用你的撰写文件启动了这个堆栈,它运行得很好。不幸的是,没有重定向问题,但nginx返回502,因为端口不正确:

    location / {
       proxy_pass "http://directus:9090/"; 
    }
9090端口位于主机上,而不是容器中。您必须将其更改为80或完全删除

至于重定向问题,它的来源超出了您目前提供的范围。我最好的猜测是它在
/data/ntemplates
中的某个地方。如果有扩展名为
.template
的文件,nginx容器中的脚本将为它们创建配置文件

我第二个最好的猜测是它在
/data/config
的某个地方,因为我没有这些文件


感谢您提供撰写文件,这为我节省了大量时间来准备此答案。

这是针对Directus 8还是Directus 9的?@RANGER-是,运行Directus 8。。。拾取容器图像“directus/directus:v8apache”您的docker-compose.yml声明端口:-“8080:80用于nginx和directus?都
nginx
directus
根据
docker-compose.yaml
映射到端口8080。这是一个输入错误。我正在端口“9090:80”运行directus“。更正了上面的信息。删除指出的端口号有助于解决问题。我还没有详细测试过,但似乎有助于UI正常工作。谢谢
server {
    #/etc/nginx/conf.d/directus.conf 
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    location / {
       proxy_pass "http://directus:9090/"; 
    }
}

    location / {
       proxy_pass "http://directus:9090/"; 
    }