fdroid
@fdroid
press any key

Как проксировать java-приложение?

Есть Java веб-приложение, гвоздями прибитое к Windows (работает на локальном Jetty) и доступное по адресу localhost:8080/app. Задача - обеспечить доступ к приложению извне по доменному имени. Решил использовать Linux-виртуалку с реальным IP и прикрученным доменом, на которой поднять nginx и с помощью proxy_pass проксировать на Win-машину. Собственно, так делал не раз, но вот именно с такой связкой не получается - либо 500 Internal Error, либо Authentication failed даже без запроса авторизации, либо открывается список файлов в /app. Пробовал Apache и mod_proxy - та же история.
  • Вопрос задан
  • 596 просмотров
Решения вопроса 1
fdroid
@fdroid Автор вопроса
press any key
В итоге, решил вопрос так.

1) По прямой ссылке вида my.domain/app приложение начало открываться, но по ссылке my.domain - каша из служебных сообщений.
2) Пришлось использовать промежуточный index.html с единственной ссылкой на страницу входа.

Итоговый конфиг (лишнее, типа настройк ssl, убрал)

server {
    server_name my.domain;
        root /var/www/mydomain;
        index index.html index.htm;

    location /app/ {
        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://192.168.0.100:8080/app/;
        client_max_body_size 1000M;
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
abler98
@abler98
Software Engineer
Зачем проксировать? Можно пробросить внешний 80/443-й порт на 8080 внутренний. Проброс делать в роутере или в системе (если провод напрямую подключен). Затем настроить A-записи на свой внешний IP.
Ответ написан
DarkRaven
@DarkRaven
разработка программного обеспечения
Вот моя рабочая конфигурация для проксирования Jira наружу, через nginx. Да, хочу отметить, у меня Jira стоит на той же машине, и проксирование приложения из той же сети я не пробовал. Но особых проблем тут не вижу.

server {
    listen jira.orgname.local:80;
    server_name jira.orgname.local;
    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://jira.orgname.local:8080/;
        client_max_body_size 1000M;
    }
}


Так же, у меня есть случаи проксирования через IIS - там я ставил Application Request Routing, URL Rewrite. В общем-то, тоже ничего сложного и военного нет.

Есть Java веб-приложение, гвоздями прибитое к Windows (работает на локальном Jetty) и доступное по адресу localhost:8080/app


Оно же доступно по <PC-NAME>:8080/app, где PC-NAME - это имя вашего компьютера ?
Просто, если оно слушает только Localhost, ему нужно сказать, чтобы оно слушало 0.0.0.0 или какой-то конкретный IP. Или предварительно пробросить на внешний порт, открытый в файрволле.

UPD. Я только что протестировал, эту конфигурацию для разнесенных на разные машины nginx и java-приложение - все заработало тут же, без всяких проблем.

Попробуйте проверить само приложение, может у него есть что-то, что мешает работе.
Так же, я бы рекомендовал бы почитать вот тут - https://serverfault.com/questions/824140/nginx-log... . На словах, нужно влючить логирование для proxy_pass и посмотреть, что происходит при ошибке.
Ответ написан
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы