错误-nginx:在/etc/nginx/nginx.conf:1中不允许[emerg]“服务器”指令

时间:2020-01-21 20:11:12

标签: docker nginx

我使用Nginx,PHP-7.4-fpm,PhpMyAdmin和MariaDB创建了docker-compose.yml文件,我的docker-compose.yml的执行已成功部署,但是Nginx容器有错误:

nginx:/etc/nginx/nginx.conf:1

中不允许使用“ emerg”“服务器”指令

.docker / docker-compose.yml:

version: '3'

services:
    nginx:
        image: nginx:alpine
        volumes:
            - ../:/code
            - ./config/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
            - ./logs:/var/log/nginx
        ports:
            - "80:80"
        depends_on:
            - php

    php:
        build:
            context: './config/php/'
            args:
                PHP_VERSION: ${PHP_VERSION}
        depends_on:
            - mariadb
        volumes:
            - ../:/code
            - ./config/php/conf.d/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini
        ports:
            - "9000:9000"

    mariadb:
        image: mariadb:${MARIADB_VERSION}
        restart: always
        ports:
            - "3306:3306"
        environment:
            - MYSQL_DATABASE=${MARIADB_DATABASE}
            - MYSQL_USER=${MARIADB_USER}
            - MYSQL_PASSWORD=${MARIADB_PASSWORD}
            - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}
        volumes:
            - ./database:/var/lib/mysql

    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        ports:
            - "${PHPMYADMIN_HTTP_PORT}:80"
        depends_on:
            - mariadb
        environment:
            - MYSQL_USER=${MARIADB_DATABASE}
            - MYSQL_PASSWORD=${MARIADB_PASSWORD}
            - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD}

.docker / config / nginx / nginx.conf:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    server_name monsite.local;
    root /code;

    index index.php index.html index.htm;

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

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    error_log /var/log/nginx/project_error.log;
    access_log /var/log/nginx/project_access.log;
}

我不明白为什么会出现此错误,请您能帮我吗?

提前谢谢

1 个答案:

答案 0 :(得分:0)

在您的上下文中,您需要将服务器包装在http块中。或移动配置文件,而不是替换默认配置文件,而是替换/etc/nginx/conf.d/中的默认服务器配置,因此您可以使用类似

的方法
        - ./nginx.conf:/etc/nginx/conf.d/default.conf

用于nginx的卷。这将重写您的默认服务器配置。 如果您打算使用多个配置文件,也可以将其复制到启用了站点的文件夹中。

或者您可以通过使用http块包装它来修改nginx配置