admin管理员组

文章数量:1321058

Title: 502 Bad Gateway Error when Configuring base_url in CodeIgniter with Nginx and Docker


Description:

I have a legacy CodeIgniter application running in a Dockerized environment with PHP-FPM, MySQL, and Nginx. The application works fine when I set the base_url in application/config/config.php to the IP address or :8086/, but when I configure it as /, I encounter a "502 Bad Gateway" error.

Setup Details:

  1. Docker Compose Configuration:
version: '3.9'

services:
  app:
    build:
      context: .
      dockerfile: dockerfile
    container_name: php-fpm
    volumes:
      - .:/var/www/html
    networks:
      - mynetwork
    depends_on:
      - db

  db:
    image: mysql:5.7
    container_name: database
    ports:
      - "3308:3306"
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: test
      MYSQL_USER: test
      MYSQL_PASSWORD: password
    volumes:
      - db_data:/var/lib/mysql
      - ./data_dump.sql:/docker-entrypoint-initdb.d/data_dump.sql:ro
    networks:
      - mynetwork

  nginx:
    image: nginx:alpine
    container_name: nginx
    ports:
      - "8080:80"
    volumes:
      - ./nginx-1.17.6/conf/nginx.conf:/etc/nginx/conf.d/default.conf:ro
      - .:/var/www/html
    depends_on:
      - app

volumes:
  db_data:
  networks:
    mynetwork:
      driver: bridge
  1. PHP-FPM Dockerfile:
FROM php:7.0-fpm

RUN docker-php-ext-install mysqli

RUN apt-get update && apt-get install -y libpng-dev libjpeg-dev libfreetype6-dev \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/freetype2 --with-jpeg-dir=/usr/include \
    && docker-php-ext-install gd

EXPOSE 9000
  1. Nginx Configuration:

The Nginx server in Docker listens on port 8080 and proxies requests to the PHP-FPM container. I also have an external Nginx server on the host server, which proxies to the Dockerized Nginx server.

  1. Cloudflare Configuration:
  • I am using Cloudflare with Flexible SSL, where Cloudflare handles SSL termination and forwards traffic to my server over HTTP.

Issue:

When I set the base_url in application/config/config.php to /, I get a "502 Bad Gateway" error. However, when I set the base_url to either the IP address or :8086/, the application redirects correctly to the app.

$config['base_url'] = '/';

What I've Tried:

  1. Ensured that both Nginx in the Docker container and the external Nginx server on the host are configured to properly proxy requests.
  2. Verified that the ports for Nginx and PHP-FPM are open and accessible.
  3. Checked Cloudflare SSL settings (Flexible SSL is enabled).
  4. Confirmed that my external Nginx server correctly forwards requests to the Docker Nginx container.
  5. Ensured that both the base URL and SSL configurations are correct in the app and Nginx.

Questions:

  1. Why am I encountering a 502 Bad Gateway error when using / in the base_url config, but not with :8086/ or the IP address?
  2. Could the issue be related to Cloudflare’s Flexible SSL configuration, or is it an Nginx misconfiguration?
  3. Are there any specific adjustments I need to make to my Nginx configuration to properly handle the HTTPS requests from Cloudflare?

Any help or suggestions would be greatly appreciated!


本文标签: php502 Bad Gateway Error when Configuring baseurl in CodeIgniter with Nginx and DockerStack Overflow