@driverx18

Nginx — не могу установить ssl сертификат, в чем проблема?

Есть конфиг nginx (app.conf):
server {
    listen 80;
    index index.php index.html;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/public;
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
    location / {
        try_files $uri $uri/ /index.php?$query_string;
        gzip_static on;
    }
}

server {
	listen 443 ssl;                                      
	ssl_certificate /etc/ssl/your_domain.crt;
	ssl_certificate_key /etc/ssl/rsa.key;
	server_name here_my_website.com;
}

Проблема в том, что когда я добавляю второй server { (который отвечает за ssl), то когда я делаю docker restart контейнера nginx, он всегда в состоянии рестарта (пример: Restarting (1) 58 seconds ago)
Когда я убираю server { который отвечает за ssl - все запускается хорошо. Я думаю, что я что-то не правильно сделал, по скольку устанавливаю ssl я в первый раз, и в конфиге nginx бываю очень редко. Буду очень рад помощи)
Посмотрел docker logs - показало:
nginx: [emerg] cannot load certificate "/etc/ssl/your_domain.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/ssl/your_domain.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

Может ли быть дело в том, что я положил конфиги в /etc/ssl/, а nginx в контейнере, и просто не может до них достучаться?
  • Вопрос задан
  • 2377 просмотров
Пригласить эксперта
Ответы на вопрос 3
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
Ну да, логично - если nginx не находит файла с сертификатом, он и не запустится. Сделайте его доступным и всё взлетит.
Ответ написан
SagePtr
@SagePtr
Еда - это святое
Полагаю, директория /etc/ssl у вас находится вне контейнера и не проброшена туда, потому процессы внутри контейнера её не видят.
Ответ написан
ну здрасти а второй сервер по вашему висящий на вообще другом порту каким-то образом должен взять оставшиеся настройки с вообще левого сервера?
будьте добры дописать все остальное, а еще лучше разнесите их в разные файлы дабы не смущять свой взгляд.

######################################################################
## SSL configuration
######################################################################
# recommended but not manditory directive
# leave commented out unless you know what it is doing
#more_set_headers 'Strict-Transport-Security: max-age=15768000';
        ssl on;
        ssl_session_cache  shared:SSL:10m;
        ssl_session_timeout 1h;
        ssl_protocols TLSv1.2 TLSv1.1;
        add_header Strict-Transport-Security "max-age=15768000" always;
        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_prefer_server_ciphers on;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK;
        ssl_certificate /var/www/clients/client132/web171/ssl/3dpaneli.ru-le.crt;
        ssl_certificate_key /var/www/clients/client132/web171/ssl/3dpaneli.ru-le.key;
        ssl_dhparam /etc/nginx/ssl/dhparam.pem;

ну а далее документ рут кто интерпретирует пхп и тд и тп servers не может брать настройки с другого srevers помоему это очевидно
ну и ssl_dhparam нужно сделать
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы