@evgen9586
Backend-dev. Лублу Enterprise и не люблю понты)

Как правильно настроить Nginx под два домена и два сертификата?

Добрый день. У сайта появился второй домен. Он как и первый идет на первый сервер. Человек, который круто шарил за nginx пока в отъезде, и пытаемся настроить. Вынесли каждую настройку в отдельный блок Server, но в таком кейсе nginx возвращает 404 так как видимо не видит root

Когда делают два блока server дубликата то к обоим хостам применяет один и тот же серт. В гугле более менее только эта статья

https://bobcares.com/blog/multiple-ssl-certificate...

# Force using of HTTPS protocol
geo $authentication {
    ranges;
    default        "Restricted Content";
    include        /etc/nginx/whitelist.conf;
}

server {
	listen 80 default_server;
	listen [::]:80 default_server;
	server_name %DOMAIN% %BY_DOMAIN%;

    set $redirect no;
    if ($request_uri !~ "^/zeon(.*)$") {
        set $redirect yes;
    }


    location / {
        if ($redirect = yes) {
          return 301 https://$host$request_uri;
          break;
        }
    }

}

server {
    server_name %BY_DOMAIN%;

    listen 443 ssl;
    listen [::]:443 ssl;

    ssl_certificate     /etc/letsencrypt/live/%BY_DOMAIN%/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/%BY_DOMAIN%/privkey.pem;
}

server {
    server_name %DOMAIN%;

    listen 443 ssl;
    listen [::]:443 ssl;

    ssl_certificate     /etc/letsencrypt/live/app/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/app/privkey.pem;
}


server {
    server_name %DOMAIN% %BY_DOMAIN%;
   
    set $web_root   /var/www/html/app/web;
    root $web_root;


    location ~ ^/(?!:hr-file)*\.(?:jpg|jpeg|png|gif|ico|css|js|map|svg)$ {
       expires 10d;
       add_header Vary Accept-Encoding;
    }

    sendfile off;

    location / {

        if (-f $web_root/maintenance.on) {
            return 503;
        }

        index index.php;

        try_files $uri $uri/ /index.php?$query_string;

        auth_basic $authentication;
        auth_basic_user_file /etc/nginx/.htpasswd;
    }

    location /status {
        access_log off;
        include fastcgi_params;
        fastcgi_param SCRIPT_NAME       /status;
        fastcgi_param SCRIPT_FILENAME   /status;
        fastcgi_pass php-fpm:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        auth_basic $authentication;
        auth_basic_user_file /etc/nginx/.htpasswd;
    }

    location ~ [^/]\.php(/|$) {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $web_root/index.php;
        fastcgi_pass            php-fpm:9000;
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_index           index.php;
        fastcgi_read_timeout    300s;

        auth_basic $authentication;
        auth_basic_user_file /etc/nginx/.htpasswd;
    }

    error_page 503 @maintenance_page;

    location @maintenance_page {
        rewrite ^(.*)$ /maintenance.html break;
    }
}
  • Вопрос задан
  • 1154 просмотра
Пригласить эксперта
Ответы на вопрос 2
@psiklop
У Nginx свои доки, гугл их в первой ссылке отдает: https://nginx.org/ru/docs/
Хотя написаны не для новичков, очень много айти-самоучителей и в каждом статья как настроить хосты Nginx.

Насчет сертификатов letsencrypt нельзя скопировать с одного домена на другой.
Надо снова запустить certbot -- nginx и указать новый домен и сертификата будет два.
Или отозвать старый и сделать новый сертификат сразу на оба домена.
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Уберите оба маленьких server{} с listen 443 ssl;
скопируйте-вставьте большой server{}, оставьте в каждом или %DOMAIN или %BY_DOMAIN%,
и не забудьте в эти оба большие server{} вписать listen 443 ssl;, и соответствующие сертификаты.
Фсё!
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы