nginx容器的docker编写失败

nginx容器的docker编写失败,docker,nginx,Docker,Nginx,我在运行docker compose up时遇到以下错误: backend_1_a5b5a2caf6fc | 2019/04/28 21:40:49 [emerg] 1#1: no "ssl_certificate" is defined for the "listen ... ssl" directive in /etc/nginx/conf.d/default.conf:4 backend_1_a5b5a2caf6fc | nginx: [emerg] no "ssl_certificate

我在运行docker compose up时遇到以下错误:

backend_1_a5b5a2caf6fc | 2019/04/28 21:40:49 [emerg] 1#1: no "ssl_certificate" is defined for the "listen ... ssl" directive in /etc/nginx/conf.d/default.conf:4
backend_1_a5b5a2caf6fc | nginx: [emerg] no "ssl_certificate" is defined for the "listen ... ssl" directive in /etc/nginx/conf.d/default.conf:4
...
...
production_backend_1_a5b5a2caf6fc exited with code 1
这是我的nginx Dockerfile:

FROM nginx

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

fastcgi_cache_path /dev/shm levels=1:2 keys_zone=laravel:100m;
fastcgi_cache_key "$scheme$request_method$host$request_uri$query_string";

server {
   listen 80 default_server;

   root   /var/www/public;
   index  index.php index.html;

   client_max_body_size 5M;

 ...
 ...
version: '3'

services:

  backend:
    build: ./nginx
    depends_on:
    - db
    - redis
    working_dir: /var/www
    volumes:
      - ../../src:/var/www
    ports:
      - 80:80
...
...
docker compose.yml:

fastcgi_cache_path /dev/shm levels=1:2 keys_zone=laravel:100m;
fastcgi_cache_key "$scheme$request_method$host$request_uri$query_string";

server {
   listen 80 default_server;

   root   /var/www/public;
   index  index.php index.html;

   client_max_body_size 5M;

 ...
 ...
version: '3'

services:

  backend:
    build: ./nginx
    depends_on:
    - db
    - redis
    working_dir: /var/www
    volumes:
      - ../../src:/var/www
    ports:
      - 80:80
...
...

这意味着您没有正确设置ssl(您缺少服务器证书)。因为您在docker compose中映射了端口80而不是443,所以我假设您不打算使用SSL

只需删除
nginx.conf
中的以下行即可禁用ssl:

listen 443 ssl http2;

请确保重建并重新启动您的nginx容器。

是否有其他服务器侦听端口443。尝试从启用的/etc/nginx/sites中删除所有符号链接,但要使该服务器正常工作的服务器除外。

但是,如果有人需要使用SSL,此错误意味着您的
服务器
部分缺少
ssl\u证书
ssl\u证书密钥
声明。您需要有一个
.crt
和一个
.key
文件才能使用ssl运行

看起来应该是

server {

  listen 80;
  listen 443 default_server ssl;

  ssl_certificate /etc/nginx/certs/default.crt;
  ssl_certificate_key /etc/nginx/certs/default.key;

  ... other declarations

}

你重建容器了吗?请检查您的配置是否到位。您可以使用
nginx-T
转储当前nginx配置(您需要在容器中)。是否存在任何ssl?顺便说一句。该错误指示错误的ssl配置的位置。错误是否显示与以前相同的文件/行?看起来重建几次就解决了这个问题。非常感谢。不确定第一次重建为什么没有。共享整个
default.conf
文件。