简体   繁体   中英

How to configure an nginx.conf with a dockerised drupal website?

this is my first time working with nginx and I'm using it to access my dockerised drupal appliction from a production subdomain.

So before everything, I'm currently using docker-compose to create my sql, app, and webservice containers, here is my docker-compose file:

version: '3'

services:
        app:
            image: osiolabs/drupaldevwithdocker-php:7.4
            volumes:
                - ./docroot:/var/www/html:cached
            depends_on:
                - db
            restart: always
            container_name: intranet
          
        db:
            image: mysql:5.5
            volumes:
                - ./mysql:/var/lib/mysql
            restart: always
            environment:
                    - MYSQL_ROOT_PASSWORD=linux1354web
                    - MYSQL_USER=root
                    - MYSQL_PASSWORD=linux1354web
                    - MYSQL_DATABASE=intranet
            container_name: intranet-db
            
        web:
            build: ./web
            ports:
                - 88:80
            depends_on:
                - app
            volumes:
                - ./docroot:/var/www/html:cached
            restart: always
            container_name: webIntranet

I don't think the containers are the problem, as when I go to the drupal containers the site works, but my main problem is the link with the nginx container. Here is my nginx.conf:

# stuff for http block
client_max_body_size 1g;
# fix error: upstream sent too big header while reading response header from upstream
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;

server {
    listen 80;
    listen [::]:80 default_server;
    server_name _;
    
    index index.php index.html;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/html;

    #RENVOYER LA PAGE DE GARDE DE APACHE2 
    location / {
        # try to serve file directly, fallback to app.php
        try_files $uri /index.php?$query_string; # For Drupal >= 7
    }

    location /intranet {
    # try to serve file directly, fallback to app.php
        try_files $uri $uri/;
    }
    
    #RENVOYER LE FICHIER ROBOTS.TXT
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }
    
    location = /favicon.ico {
            log_not_found off;
            access_log off;
    }
    
    location ~ \.php(/|$) {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:80;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $document_root;
    }
    
    
}

And this is my DockerFile to build nginx image:

FROM nginx:alpine

COPY nginx.conf /etc/nginx/conf.d/default.conf

When I go to localhost:88/ I currently have a apache2 hub page, but the moment I'm trying for another page I always get a 502 bad gateway error and the logs are saying:

webIntranet | 2021/03/11 08:44:55 [error] 30#30: *1 upstream sent unsupported FastCGI protocol version: 72 while reading response header from upstream, client: 172.26.0.1, server: _, request: "GET /index HTTP/1.1", upstream: "fastcgi://172.26.0.3:80", host: "localhost:88"

To go more into details, my docker folder looks like that, docroot containes the drupal website.

在此处输入图像描述

I have tried sovling the problem by changing the ports as some solution mentionned it but it did nothing, I don't understand what could be wrong, I've tried many things with the conf but none of them works, and I still even can't have a single page of the drupal site showing up.

The drupaldevwithdocker-php project isn't using php-fpm, hence the response is unsupported as it's from apache rather than php-fpm. I'd imagine you'd need something more like this?

proxy_pass http://app:80;

See https://gist.github.com/BretFisher/468bca2900b90a4dddb7fe9a52143fc6

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM