首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Nginx with Docker : nginx:[emerg]未知指令"enable“in /etc/nginx/nginx.conf

Nginx with Docker : nginx:[emerg]未知指令"enable“in /etc/nginx/nginx.conf
EN

Stack Overflow用户
提问于 2021-06-14 22:23:50
回答 1查看 2.8K关注 0票数 0

我有两个服务器,一个在数字海洋上,另一个在其他地方。我有一个项目,它是很好的工作与所有的应用程序在该服务器。但是,我想要创建一个液滴并将其移动到数字海洋,所以我通过sudo scp命令将所有文件复制到新服务器(数字海洋)。除Nginx返回退出代码1外,所有服务都运行良好,如下图所示。所有的代码都是一样的,所以我很困惑,为什么它不像其他的那样工作。

我能知道我可能错过了什么吗?

这是我的nginx.conf文件:

代码语言:javascript
运行
复制
worker_processes 4;
    
    events {
      worker_connections 4096;
    }
    
    http {
    
      server {
        listen 80 default_server;
        server_name "";
        return 444;
      }
    
      server {
        server_name game-dev.myappapp.com;
    
        location / {
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Host $http_host;
          proxy_set_header X-NginX-Proxy true;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "upgrade";
    
          proxy_pass http://game_nodes;
          proxy_redirect off;
        }
      }
      server {
        if ($host = game-dev.myappapp.com) {
          return 301 https://$host$request_uri;
        }
    
    
        listen 80;
        listen [::]:80;
        server_name game-dev.myappapp.com;
        return 404;
      }
    
      upstream game_nodes {
        # enable sticky session
        #ip_hash;
        server game-alpha:3000;
        keepalive 8;
      }
    
      server {
        server_name api-dev.myappapp.com;
    
        location / {
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Host $http_host;
          proxy_set_header X-NginX-Proxy true;
    
          proxy_pass http://main_nodes;
          proxy_redirect off;
    
        }
      }
    
      server {
        if ($host = api-dev.myappapp.com) {
          return 301 https://$host$request_uri;
        }
    
        listen 80;
        listen [::]:80;
        server_name api-dev.myappapp.com;
        return 404;
      }
    
      upstream main_nodes {
        server main-alpha:8000;
        server main-beta:8000;
        keepalive 8;
      }
    }

这是我的Dockerfile:

代码语言:javascript
运行
复制
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf

从下面的屏幕截图中可以看到(左边的服务器是我的液滴,右边的是我的另一个服务器)我的液滴通常不会监听80个端口--它应该监听另一个服务器的80个端口。

这是我的DigitalOcean液滴的Nginx日志。

代码语言:javascript
运行
复制
root@knowin-project-dev:/home/cihat/app# docker logs nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2021/06/13 20:22:46 [emerg] 1#1: unknown directive "enable" in /etc/nginx/nginx.conf:45
nginx: [emerg] unknown directive "enable" in /etc/nginx/nginx.conf:45

这是来自nginx.co.conf的DigitalOcean液滴:

代码语言:javascript
运行
复制
    root@knowin-project-dev:/home/cihat/app# docker run -it nginx /bin/bash 
    root@1c54013ff2c8:/# cat etc/nginx/nginx.conf 
    user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

注意:ufw的状态是不活动的。所以所有端口都可用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-15 06:51:44

读取错误消息:

代码语言:javascript
运行
复制
2021/06/13 20:22:46 [emerg] 1#1: unknown directive "enable" in /etc/nginx/nginx.conf:45
nginx: [emerg] unknown directive "enable" in /etc/nginx/nginx.conf:45

您的配置文件#45中有语法错误,您共享的配置文件在第45行看起来不错,因为您的“启用粘性会话”是用#符号注释掉的。

通过键入以下命令确保正在运行的容器中的配置文件是相同的

docker exec nginx /bin/bash -c "cat /etc/nginx/nginx.conf" | tee nginx.co.conf

在你的数字海洋服务器上。请共享nginx.co.conf文件的输出,并确保第45行也被注释掉。

你是怎么部署码头集装箱的?你把它们作为tar导出并上传到新服务器上了吗?听起来你在本地集装箱和数字海洋上的集装箱之间有一些不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67977872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档