@Rem4stick

Что делать, если Nginx не считывает корневой домен?

У меня возникла проблема. У меня есть Nginx с установленным PHP-FPM (проверено, всё работает). У меня есть домен, предположим mydomain.com. Он подключён через CloudFlare (там проверено, всё работает) корректно.

Вот мой конфиг Nginx:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name _;

    return 301 https://$host$request_uri;
}

server {
    listen 80 ;
    listen [::]:80 ;
    server_name mydomain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl ipv6only=on; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;
    server_name mydomain.com;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

   # Отключение запросов к favicon.ico
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    # Отключение запросов к robots.txt
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }
}


Nginx определяет конфиг по IP адресу и открывается сайт. А если заходить по домену, то возникает проблема — Сайт mydomain.com не позволяет установить соединение.

При подключении по домену вообще пустой лог.
Ошибок в конфиге нет при проверке nginx -t

UPD:

Стоит отметить, что сервер под веб-хостинг стоит у меня дома, над ним стоит роутер Keneetic, на роутере открыты порты 80 и 443 (как показывает 2ip.ru - порты открыты, сомнений нет), на роутере стоит так же белый IP адрес. На CloudFlare настроен домен, имеющий NS серверы от CF (логично), и настроен на белый IP адрес. И по IP адресу действительно я могу подключиться на свой веб-сервер. Однако, если я подключаю домен, то становится весело. Если я подключу субдомен (к примеру www, подключу его как запись A с тем же IP адресом), то я по-прежнему могу попасть на сайт, это не работает только для корневых доменов (т.е. mydomain.com без субдоменов)
  • Вопрос задан
  • 280 просмотров
Пригласить эксперта
Ответы на вопрос 1
Nginx определяет конфиг по IP адресу и открывается сайт. А если заходить по домену, то возникает проблема — Сайт mydomain.com не позволяет установить соединение.

нет по server_nameна основание его подставляется конфиг.
А берет он его из браузера клиента!!!
Так что у него нет проблем с тем что 100 сайтов на 1 айпи и одном порту.
А вот
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name _;

    return 301 https://$host$request_uri;
}

это "мусорка" то есть любой домен не объявленный явно, то есть это /dev/null для nginx
тут не должно быть реальных сайтов, имен по этому у тебя сайт открывается по IP ибо такогодомена нет и срабатывает правило хз отдам ченить с этой папки, тут по идее должен лежать файлик , братик все работает ты попал на нужный сервер но домен не опознан.
Все сайты нужно объявлять явно. server_name mydomain.com; server_name mydomain2.com;
Если же у тебя все сайты лежат в одном месте и ЧПУ отвечает за их отдачу то просто укажи их все сразу
server_name mydomain.com  2mydomain.com 3mydomain.com ;


PS
Вижу колхоз совхоз.
Рекомендую пока поставить веб панельку и поработать через нее дабы они ставятся в 1 клик ( желательно на чистую ос). Не нужно уходить в чистую консоль поскольку вначале посмотри как собираются веб сервера там целая портянка демонов от FPM до certbot и как они взаимодействуют нужно вначале посмотреть понять а потом уже мутить свое.
Вот у меня к примеру более 100 серверов, и больше 15 лет практики но половина серверов с веб панелями ибо нет смысла руками чет ковырять, это избавляет от человеческого фактора и я ценю время, хотя да местами кастомлю панельки сильно.
И даже есть места где их нет, но там свои проблемы поверь мне, когда ты читаешь конфиги 10 летней давности созданы непонятно кем, некоторые строки комментировать некому. в общем в голой установке тоже есть косяки.
ispconfig3 - я на ней но не всем подойдет, поскольку я ее кастрюлю сильно но если тебе чисто бэк то подойтет изи.
vestacp - дешево сердито но работает
aapanel - хорошее соотношение цена качество удобство, нет русского, и очень долго ставится около 2
часов !, в смысле сама но вот так вот ;)
brainycp - одним словом "багато" интерфейс не очень интуитивен и для начинающих может вызывать бурю эмоции, но умеет конечно до талого, проприетарен, способ заработка у ребят вообще непонятен но русские и сап даже есть, но я бы не стал их брать ибо интерфейс мое почтение все через поиск ;) ибо без него ты даже сайт не создашь сразу .
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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