Назад | Перейти на главную страницу

Nginx обслуживает неправильный сайт

У меня есть настройка nginx на моем vps со статическим IP-адресом и двумя доменами (beryju.org и nope.berlin).

Я хочу служить:

Кроме того, я хочу, чтобы beryju.org и blog.beryju.org поддерживали SSL.

Но с моей текущей конфигурацией я получаю:

Я пробовал, и он также не работает, когда я удаляю имя хоста из оператора прослушивания, т.е.

listen i.beryju.org:80;

к

listen 80;

в каждом файле.

beryjuorg-blog.conf

server {
    listen blog.beryju.org:80;
     listen blog.beryju.org:443 ssl;
    ssl_certificate /home/beryju/SSL/nginx/beryju.org.cert;
    ssl_certificate_key /home/beryju/SSL/nginx/beryju.org.key;

    access_log /var/log/nginx/beryjuorg-blog.access.log;
    error_log /var/log/nginx/beryjuorg-blog.error.log;

    root /home/beryju/Apps/Ghost/;
    index index.html index.htm index.php;

    location  / {
        proxy_pass http://127.0.0.1:2368;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

}

beryjuorg-image-hoster.conf

server {
    listen i.beryju.org:80;

    server_name i.beryju.org;

    access_log /var/log/nginx/beryjuorg-image-hoster.access.log;
    error_log /var/log/nginx/beryjuorg-image-hoster.error.log;

    root /usr/share/nginx/i.beryju.org;
    index index.html index.htm index.php;

    location  /gyazo.php {
        try_files $uri $uri/ =404;
        fastcgi_index index.php;
        include fcgi.conf;
        fastcgi_pass unix:/var/run/php-fcgi-beryjuorg-image-hoster-php-fcgi-0.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }


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

}

beryjuorg.conf

server {
    listen beryju.org:80;
    listen beryju.org:443 ssl;
    ssl_certificate /home/beryju/SSL/nginx/beryju.org.cert;
    ssl_certificate_key /home/beryju/SSL/nginx/beryju.org.key;
    server_name beryju.org;

    access_log /var/log/nginx/beryjuorg.access.log;
    error_log /var/log/nginx/beryjuorg.error.log;

    root /usr/share/nginx/beryju.org/;
    index index.html index.htm index.php;

    location ~ [^/]\.php(/|$) {
        fastcgi_index index.php;
        include fcgi.conf;
        fastcgi_pass unix:/var/run/php-fcgi-beryjuorg-php-fcgi-0.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

}

nopeberlin.conf

server {
    listen nope.berlin:80;

    server_name nope.berlin;

    access_log /var/log/nginx/nopeberlin.access.log;
    error_log /var/log/nginx/nopeberlin.error.log;

    root /usr/share/nginx/nope.berlin/;
    index index.html index.htm index.php;

    location  / {
        autoindex on;
    }

}

Файл beryjuorg-blog.conf отсутствует server_name директива, которая означает, что серверный блок будет "уловкой" для запросов без HTTP / 1.1 заголовка Host (доменное имя) или неопределенного заголовка Host. Видеть Как nginx обрабатывает запросы и серверные блоки для получения дополнительной информации об этом.

Поскольку у вас статический IP-адрес, вы можете сделать конфигурацию более явной, добавив IP-адрес в listen директива, например

listen 192.168.0.3:80;

В listen директива не предназначена для приема имени хоста; видеть документация.

Указание обоих server_name и необязательный IP-адрес для listen должен решить проблему.