Системное администрирование

Как организовать доступ к двум сайтам на одном ip? ubuntu nginx php-fpm dotnet

Есть сервер на убунту. На нем работает nginx. По отдельности запускаются и работают два сайта(asp net и php). Они открываются локально по доменным именам, указанным в конфиге и в файле /etc/hosts Можно ли как-то сделать так, чтобы вход на сайт был через "https://serverName/site1" и "https://serverName/site2"? Если можно, то как это сделать? Какие штуки устанавливать и настраивать? Постараюсь ответить на любые вопросы при необходимости, если они появятся, конечно.
Да, можно настроить доступ к двум сайтам на одном IP-адресе через nginx. Для этого нужно создать два конфигурационных файла для каждого сайта и указать в них разные директории для корневых папок сайтов.

Установите необходимые пакеты:
arduino
Copy code
sudo apt-get install nginx php-fpm dotnet-sdk-3.1
Создайте два конфигурационных файла для каждого сайта. Например, /etc/nginx/sites-available/site1 и /etc/nginx/sites-available/site2.

Отредактируйте конфигурационный файл /etc/nginx/sites-available/site1, добавив следующий код:

bash
Copy code
server {
listen 80;
server_name serverName;

location /site1 {
root /var/www/site1;
index index.php index.html index.htm;
try_files $uri $uri/ /site1/index.php?$args;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
}
В этом примере корневая папка сайта site1 находится в /var/www/site1, а запросы на адрес htps://serverName/site1 будут обслуживаться из этой директории.

Отредактируйте конфигурационный файл /etc/nginx/sites-available/site2, добавив следующий код:
bash
Copy code
server {
listen 80;
server_name serverName;

location /site2 {
root /var/www/site2;
index index.php index.html index.htm;
try_files $uri $uri/ /site2/index.php?$args;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
}
В этом примере корневая папка сайта site2 находится в /var/www/site2, а запросы на адрес htps://serverName/site2 будут обслуживаться из этой директории.

Активируйте конфигурационные файлы сайтов, создав символические ссылки на них в директории /etc/nginx/sites-enabled/:
bash
Copy code
sudo ln -s /etc/nginx/sites-available/site1 /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2 /etc/nginx/sites-enabled/
Перезапустите nginx:
Copy code
sudo systemctl restart nginx
Теперь вы можете получить доступ к сайтам через URL-адреса htps://serverName/site1 и htps://serverName/site2. Обратите внимание, что вам также может понадобиться настроить HTTPS-сертификаты для каждого сайта, чтобы обеспечить безопасный доступ.
Akbar Gafforov
Akbar Gafforov
6 357
Лучший ответ
Владимир Тарубаров Всё повторил, пишет ошибку 404.
А обязательно ли в fastcgi_pass "unix:/run/php/php7.4-fpm.sock"?
Протокол HTTP1.1 поддерживает виртуальный хостинг. Это когда на одном сервере с одним IP куча сайтов. Настраивается - как описали выше. Главное - задать поле server_name, оно должно будет совпадать с полем host в заголовке протокола http.
Потом задаешь в DNS 2 записи с разными именами и одним IP для них, типа:
www.domain1 IN A 10.0.0.1
www.domain2 IN A 10.0.0.1
Владимир Тарубаров 10.0.0.1 - это адрес сервера?