У меня была рабочая конфигурация в nginx только для одного из моих веб-сайтов, но я сломал ее, когда попытался заставить ее работать с двумя разными доменами, один из которых имеет 2 поддомена, и все они обслуживали разные сайты или приложения. Чтобы усложнить мне задачу, домен, на котором запущено 2 приложения, находится на отдельной машине, и я пытаюсь передать прокси-запросы для этого домена на правильную машину в моей локальной сети. Смотри ниже:
Моя конфигурация NGINX — это катастрофа, но она выглядит следующим образом:
сервер {
слушать 80 default_server;
слушать [::]:80 default_server;
корень /home/pi/sites/main;
# Добавьте index.php в список, если вы используете PHP
индекс index.html index.htm index.nginx-debian.html domain1_index.html;
имя сервера _;
место расположения / {
# Сначала пытаемся обслужить запрос как файл, затем
# в качестве каталога, затем вернуться к отображению 404.
try_files $uri $uri/ =404;
}
}
сервер {
корень /home/pi/sites/main;
индекс index.html index.htm index.nginx-debian.html;
имя_сервера внутренний.домен1.info; # под управлением Certbot
место расположения / {
# Сначала пытаемся обслужить запрос как файл, затем
# в качестве каталога, затем вернуться к отображению 404.
try_files $uri $uri/ =404;
}
слушать [::]:443 ssl ipv6only=on; # под управлением Certbot
слушать 443 ssl; # под управлением Certbot
ssl_certificate /etc/letsencrypt/live/internal.domain1.info/fullchain.pem; # под управлением Certbot
ssl_certificate_key /etc/letsencrypt/live/internal.domain1.info/privkey.pem; # под управлением Certbot
включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot
}
сервер {
если ($ host = internal.domain1.info) {
вернуть 301 https://$host$request_uri;
} # управляется Certbot
слушать 80 ;
слушать [::]:80 ;
имя_сервера внутренний.домен1.info;
вернуть 404; # под управлением Certbot
}
сервер {
имя_сервера shiba.com www.shiba.com шепот.shiba.com;
место расположения / {
proxy_pass http://<IP-адрес машины2>:8888;
}
}
сервер {
имя_сервера yelling.shiba.com;
место расположения / {
proxy_pass http://<IP-адрес машины2>:8555;
}
}
Как я могу заставить это обслуживать веб-сайты, указанные на моей картинке?
Спасибо.
Изменить: предложенная мной новая конфигурация
|доступные сайты | символическая ссылка --> | сайты с поддержкой
конф1 | | конф1
# https сайт
сервер {
корень /home/pi/sites/main;
индекс index.html index.htm index.nginx-debian.html;
место расположения / {
# Сначала пытаемся обслужить запрос как файл, затем
# в качестве каталога, затем вернуться к отображению 404.
try_files $uri $uri/ =404;
}
слушать [::]:443 ssl ipv6only=on; # под управлением Certbot
слушать 443 ssl; # под управлением Certbot
ssl_certificate /etc/letsencrypt/live/internal.domain1.info/fullchain.pem; # под управлением Certbot
ssl_certificate_key /etc/letsencrypt/live/internal.domain1.info/privkey.pem; # под управлением Certbot
включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot
}
#http перенаправление веб-сайта
сервер {
если ($ host = internal.domain1.info) {
вернуть 301 https://$host$request_uri;
} # управляется Certbot
слушать 80 ;
слушать [::]:80 ;
имя_сервера внутренний.домен1.info;
вернуть 404; # под управлением Certbot
}
|доступные сайты | символическая ссылка --> | сайты с поддержкой
конф2 | | конф2
сервер {
слушать 80 ;
слушать [::]:80 ;
имя_сервера шепот.shiba.info;
вернуть 301 http://xxx.xxx.x.xx:8555;
}
|доступные сайты | символическая ссылка --> | сайты с поддержкой
конф3 | | конф3
сервер {
слушать 80 ;
слушать [::]:80 ;
имя_сервера yelling.shiba.info;
вернуть 301 http://xxx.xxx.x.xx:8888;
}