【问题标题】:Laravel application on Nginx with Docker keeps redirecting to the initial page带有 Docker 的 Nginx 上的 Laravel 应用程序不断重定向到初始页面
【发布时间】:2020-10-24 15:14:28
【问题描述】:

我正在学习 Docker,我的目标是建立一个 在 Nginx 上运行的 Laravel 应用程序

我设法进入初始登录页面,但是当我输入凭据并尝试登录时,它会重定向到相同的初始页面。

我的猜测是 Nginx default.conf 文件有问题。我尝试了很多东西,一定是我错过了一些简单的东西,真是令人沮丧。

以下是与我的问题相关的一些信息。如果有任何其他信息需要我提供,请告诉我。

我的文件夹结构是这样组织的:

(它没有显示 src 文件夹中的所有文件,但那是我克隆 Laravel 应用程序的地方)

.
├── docker-compose.yml
├── Dockerfile
├── nginx/
│   └── default.conf
└── src/
    ├── app/
    ├── bootstrap/
    ├── config/
    ├── database/
    ├── public/
    ...
    ├── .env
    ├── composer.json
    ...

这是我的 docker-compose.yml:

version: '3'

networks:
  laravel:

services:
  nginx:
    image: nginx:stable-alpine
    container_name: nginx
    ports:
      - "8088:80"
    volumes:
      - ./src:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php
      - mysql
    networks:
      - laravel

  mysql:
    image: mysql:8.0
    container_name: mysql
    restart: unless-stopped
    tty: true
    ports:
      - "4306:3306"
    environment:
      MYSQL_DATABASE: temp
      MYSQL_USER: temp
      MYSQL_PASSWORD: secret
      MYSQL_ROOT_PASSWORD: secret
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    networks:
      - laravel

  php:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: php
    volumes:
      - ./src:/var/www/html
    ports:
      - "9000:9000"
    networks:
      - laravel

  composer:
    image: composer:latest
    container_name: composer
    volumes:
      - ./src:/var/www/html
    working_dir: /var/www/html
    depends_on:
      - php
    networks:
      - laravel

  npm:
    image: node:13.7
    container_name: npm
    volumes:
      - ./src:/var/www/html
    working_dir: /var/www/html
    entrypoint: ['npm']

  artisan:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: artisan
    volumes:
      - ./src:/var/www/html
    depends_on:
      - mysql
    working_dir: /var/www/html
    entrypoint: ['php', '/var/www/html/artisan']
    networks:
      - laravel

这是 Dockerfile:

FROM php:7.4-fpm-alpine

WORKDIR /var/www/html

RUN docker-php-ext-install pdo pdo_mysql

这是 default.conf 文件:

server {
    listen 80;
    index index.php index.html;
    server_name localhost;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/html/public;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

感谢您的宝贵时间。

【问题讨论】:

  • 你有没有得到这个答案?
  • 仍在等待这个问题的答案。面临同样的问题。就我而言,我必须始终将应用程序放下再打开才能使其正常工作。但是,如果您有多个应用程序,就会令人沮丧

标签: php laravel docker nginx docker-compose


【解决方案1】:

我不能确切地说出问题是什么,但从我有限的角度来看。检查 loginController.php 的 $redirectTo 设置等于什么。这需要指向您登录后要访问的页面。如果您能提供更多有用的信息。

【讨论】:

  • 谢谢亚历克斯。该请求甚至没有到达 loginController.php。同样的 Laravel 应用程序可以在 Apache 上的 docker 之外运行。
  • 您在 nginx 服务器 /sites-available/YOUR-SITE 上的配置文件中有什么?
猜你喜欢
  • 1970-01-01
  • 2020-02-09
  • 2016-01-09
  • 2018-11-06
  • 1970-01-01
  • 2017-11-10
  • 2021-04-01
  • 2017-05-15
  • 2013-06-18
相关资源
最近更新 更多