微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用NGINX作为反向代理,以通过使用docker-compose结果将Directus运行到重写或内部重定向周期

如何解决使用NGINX作为反向代理,以通过使用docker-compose结果将Directus运行到重写或内部重定向周期

使用here中所述的docker-compose和Nginx作为代理安装了Directus

文件 docker-compose.yaml

version: "3"

networks:
  directus:

services:
  MysqL:
    image: MysqL:5.7
    environment:
      MysqL_DATABASE: "directus"
      MysqL_USER: "directus"
      MysqL_PASSWORD: "directus"
      MysqL_ROOT_PASSWORD: "directus"
    ports:
      - "3306:3306"
    networks:
      - directus

  directus:
    image: directus/directus:v8-apache
    ports:
      - "9090:80"
    container_name: directus
    environment:
      DIRECTUS_APP_ENV: "production"
      DIRECTUS_AUTH_PUBLICKEY: "some random secret"
      DIRECTUS_AUTH_SECRETKEY: "another random secret"
      DIRECTUS_DATABASE_HOST: "MysqL"
      DIRECTUS_DATABASE_PORT: "3306"
      DIRECTUS_DATABASE_NAME: "directus"
      DIRECTUS_DATABASE_USERNAME: "directus"
      DIRECTUS_DATABASE_PASSWORD: "directus"
    volumes:
      - ./data/config:/var/directus/config
      - ./data/uploads:/var/directus/public/uploads    
    networks:
      - directus

  Nginx:
    image: Nginx
    depends_on:
      - directus
    container_name: Nginx    
    volumes:
      - ./data/ntemplates:/etc/Nginx/templates
      - ./directus.conf:/etc/Nginx/conf.d/default.conf
    ports:
      - "8080:80"
    networks:
      - directus

Nginx conf文件

文件 directus.conf

server {
    #/etc/Nginx/conf.d/directus.conf 
    listen       80;
    listen  [::]:80;
    server_name  localhost;

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

http:// localhost:9090正常工作时,通过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 /“

解决方法

我已经使用您的compose文件启动了堆栈,并且运行得非常顺利。不幸的是,没有重定向问题,但由于端口错误,nginx返回了502:

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

9090端口在主机上,而不在容器中。您必须将其更改为80或完全删除。

对于重定向问题,其来源超出了您到目前为止提供的内容。我最好的猜测是它在./data/ntemplates中。如果存在扩展名为.template的文件,nginx容器中的脚本将为其配置文件。

我的第二个最佳猜测是它在./data/config中,因为我没有这些文件。

感谢提供撰写文件,它为我节省了很多时间来准备此答案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。