Рейтинг:0

Nginx: запуск нескольких веб-приложений на одном сервере с использованием поддоменов

флаг in

у меня есть Убунту 20.04.1 ЛТС и я бегу nginx/1.18.0 (Убунту).

У меня в основном есть три файла конфигурации в моей папке /etc/nginx/сайты-доступны так как я хотел бы направлять запросы на:

  1. myserver.com
  2. immos.myserver.com
  3. items.myserver.com

Мой myserver.com файл конфигурации выглядит следующим образом:

сервер {
    имя_сервера myserver.com www.myserver.com;
    корень /var/www/main-application/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-защита "1; режим = блок";
    add_header X-Content-Type-Options "nosniff";

    индекс index.html index.htm index.php;

    кодировка utf-8;

    место расположения / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found выключен; }
    location = /robots.txt { access_log off; log_not_found выключен; }

    страница_ошибки 404 /index.php;

    расположение ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        включить fastcgi_params;
    }

    расположение ~ /\.(?!известно).* {
        отрицать все;
    }


    слушать 443 ssl; # под управлением Certbot
    ssl_certificate /etc/letsencrypt/live/myserver.com/fullchain.pem; # под управлением Certbot
    ssl_certificate_key /etc/letsencrypt/live/myserver.com/privkey.pem; # под управлением Certbot
    включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot


}
сервер {
    если ($ хост = www.myserver.com) {
        вернуть 301 https://$host$request_uri;
    } # управляется Certbot


    если ($ хост = myserver.com) {
        вернуть 301 https://$host$request_uri;
    } # управляется Certbot


    слушать 80;
    имя_сервера myserver.com www.myserver.com nlg.myserver.com;
    вернуть 404; # под управлением Certbot




}

Конфигурация nginx моего immos.myserver.com выглядит следующим образом:

сервер {
    слушать 80;
    имя_сервера immos.myserver.com;
    корень /var/www/immos-application/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-защита "1; режим = блок";
    add_header X-Content-Type-Options "nosniff";

    индекс index.html index.htm index.php;

    кодировка utf-8;

    место расположения / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found выключен; }
    location = /robots.txt { access_log off; log_not_found выключен; }

    страница_ошибки 404 /index.php;

    расположение ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        включить fastcgi_params;
    }

    расположение ~ /\.(?!известно).* {
        отрицать все;
    }

}

Моя конфигурация nginx items.myserver.com выглядит следующим образом:

сервер {
    слушать 80;
    имя_сервера items.myserver.com;
    корень /var/www/items_application/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-защита "1; режим = блок";
    add_header X-Content-Type-Options "nosniff";

    индекс index.html index.htm index.php;

    кодировка utf-8;

    место расположения / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found выключен; }
    location = /robots.txt { access_log off; log_not_found выключен; }

    страница_ошибки 404 /index.php;

    расположение ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        включить fastcgi_params;
    }

    расположение ~ /\.(?!известно).* {
        отрицать все;
    }

}

Все поддомены и домен маршрутизируются по DNS на мой ip сервера.

я могу открыть myserver.com и перенаправить на нужную страницу.

НО при открытии immos.myserver.com, items.myserver.com Я получаю маршрут к приложению, которое работает на myserver.com.

Все три приложения являются приложениями laravel.

Любые предложения, что я делаю неправильно?

флаг in
Ваши поддомены настроены только для http. Вы пытаетесь получить к ним доступ через https?
dave_thompson_085 avatar
флаг jp
Являются ли эти файлы только в `сайтах доступными` или **вы также связывали их в `сайтах с поддержкой` и отбрасывали nginx?** Если нет, nginx на самом деле их не читает. См. https://serverfault.com/questions/424452/nginx-enable-site-command.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.