nginx容器的docker编写失败
我在运行docker compose up时遇到以下错误: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
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
文件。