Системное администрирование
Как организовать доступ к двум сайтам на одном 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-сертификаты для каждого сайта, чтобы обеспечить безопасный доступ.
Установите необходимые пакеты:
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-сертификаты для каждого сайта, чтобы обеспечить безопасный доступ.
Протокол 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
Потом задаешь в DNS 2 записи с разными именами и одним IP для них, типа:
www.domain1 IN A 10.0.0.1
www.domain2 IN A 10.0.0.1
Владимир Тарубаров
10.0.0.1 - это адрес сервера?
Похожие вопросы
- В школах обычно блокируют доступ к внешним сайтам, как это обойти?
- Как создать доступ к определенной папке ubuntu 16.04
- как я получаю ip адрес
- Узнать чей IP - Адрес. На кого зарегистрирован, или хотя бы Город, Область. IP - Адрес: 176.226.240.151
- Можно ли установить 2 сервера на 1 ip адрес? Получается 2 локальных адреса и 1 реальный
- Вычислят если изменён: Физический адрес, IPv6-адрес, Локальный IPv6-адрес канала, Физический адрес сетевого адаптера, IP.
- IP-адреса подходят для обозначения сетей, а Ethernet-адреса — нет. Почему это так?
- Как выглядит production разработка WEB на (react, php, docker, gihub)?
- Настроить доступ удаленный к ПК
- Зачем сисадмину php/python?
А обязательно ли в fastcgi_pass "unix:/run/php/php7.4-fpm.sock"?