Здравствуйте, это должно быть довольно легко ответить для любого системного администратора, проблема в том, что я не администратор сервера, но я должен выполнить эту задачу, я очень близок, но все еще не могу этого сделать. Вот что я имею в виду, у меня есть два экземпляра tomcat, работающие на machine1
и machine2
. Люди обычно получают к ним доступ, посещая URL-адреса:
http://machine1:8080/appName
http://machine2:9090/appName
Проблема в том, что я настраиваю nginx с доменным именем, т.е. domain.com
, nginx отправляет запросы на http://machine1:8080/
и http://machine2:9090/
вместо того http://machine1:8080/
и http://machine2:9090/appName
Вот моя конфигурация (очень простая, как можно заметить):
upstream backend {
server machine1:8080;
server machine2:9090;
}
server {
listen 80;
server_name www.mydomain.com mydomain.com;
location / {
# needed to forward user's IP address to rails
proxy_set_header X-Real-IP $remote_addr;
# needed for HTTPS
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_max_temp_file_size 0;
proxy_pass http://backend;
} #end location
} #end server
Какие изменения я должен сделать, чтобы сделать следующее: - когда пользователь посещает mydomain.com
- перевести его в любой machine1:8080/appName
или machine2:9090
Спасибо
Обновление вопроса:
Я думаю, это сложно для новичка вроде меня. Я собираюсь использовать только один сервер экземпляра вместо двух, вот моя конфигурация:
server {
listen 80;
server_name www.mydomain.com mydomain.com;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080;
}
}
Эта проблема :
Когда я приезжаю mydomain.com
Я получаю эту известную страницу кота If you're seeing this page via a web browser, it means you've setup Tomcat successfully. Congratulations!
.
Если я вручную перейду к mydomain.com/myApp
тогда все работает как положено.
Вопрос:
Есть ли способ настроить это, чтобы сделать следующее:
Когда я набираю в адресной строке mydomain.com
что меня переводят в mydomain.com/myApp
Или я совсем не в этом деле. Есть способ попроще?
Обновление II:
Когда я меняю конфигурацию на:
proxy_pass http://localhost:8080/appName/;
Сайт выглядит так, как будто он работает, но на самом деле это не так. Ссылки не работают, css / js не загружается.
Мне неясно, исходя из вашего вопроса, на каком компьютере или на обоих есть "appname" в целевом URL. Предполагая, что ваши направления:
http://machine1:8080/appName
http://machine2:9090/appName
Я просто делаю снимок, но я бы попытался добавить "/ appName" либо в блок восходящего потока, либо в строку передачи прокси:
upstream backend {
server machine1:8080/appName;
server machine2:9090/appName;
}
ИЛИ
location / {
...
proxy_pass http://backend/appName;
} #end location
Документацию по директиве proxy_pass можно найти Вот.
Вам просто нужен HTTP 302 (перенаправление).
rewrite ^/*$ https://www.example.com/appName/ redirect;
Регулярное выражение поймает https://www.example.com
вместе с https://www.example.com/
и https://www.example.com///
. Новый URL-адрес будет показан пользователю браузера.
Я знаю, что ответ пришел с опозданием примерно на 5 лет, но нить перепуталась, и я увидел, что «кто-то не прав в Интернете».