简体   繁体   English

nginx 容器的 docker-compose up 失败

[英]docker-compose up fails for nginx container

I am getting the following error when I run docker-compose up:运行 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

Here is my Dockerfile for nginx:这是我的 nginx Dockerfile:

FROM nginx

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

default.conf:默认.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;

 ...
 ...

docker-compose.yml: docker-compose.yml:

version: '3'

services:

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

This means that you have not setup ssl correctly (you're missing a server certificate).这意味着您没有正确设置 ssl(您缺少服务器证书)。 Since you have mapped port 80 and not 443 in your docker-compose i assume you're not going to use SSL.由于您在 docker-compose 中映射了端口 80 而不是 443,因此我假设您不会使用 SSL。

Simply remove the following line in your nginx.conf to disable ssl:只需删除nginx.conf中的以下行即可禁用 ssl:

listen 443 ssl http2;

be sure to rebuild and restart your nginx container.请务必重建并重新启动您的 nginx 容器。

您是否有任何其他服务器侦听端口 443。尝试从 /etc/nginx/sites-enabled 中删除所有符号链接,除了您要工作的这台服务器

But, if someone need to use SSL, this error means that your server section is missing ssl_certificate and ssl_certificate_key declarations.但是,如果有人需要使用 SSL,则此错误意味着您的server部分缺少ssl_certificatessl_certificate_key声明。 You need to have a .crt and a .key file to run with ssl.您需要有一个.crt和一个.key文件才能使用 ssl 运行。

It should looks like它应该看起来像

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

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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