У меня проблемы с настройкой Nginx. Я уже искал проблему, но предложенные решения не помогли мне.
У меня есть несколько приложений на сервере Tomcat и несколько приложений на сервере jboss. Я настроил на другом сервере Nginx в качестве обратного прокси и он работает правильно. Теперь я хотел бы получить доступ к приложениям на tomcat и jboss, используя доменные имена. Например. У меня есть приложения на tomcat по этому адресу: tomcat.domain.com:8080/app1; tomcat.domain.com:8080/app2 и так далее, даже для приложений jboss. С обратным прокси у меня есть такой вывод: proxy.domain.com/app1 proxy.domain.com/app2 и так далее, поэтому я не не нужно указывать ни номер порта, ни принадлежность к указанному серверу. Но я бы использовал субдомены следующим образом: app1.domain.com, app2.domain.com и так далее. Итак, моя конфигурация Nginx, которая работает и используется только для обратного прокси-сервера, такова (для простоты я сообщу строки только о tomcat):
upstream tomcat_server {
server tomcat.domain.com:8080;
}
server {
listen 80;
location /app1 {
proxy_pass http://tomcat_server;
proxy_set_header X-Forwarded-Host $host;
}
}
Для конфигурации субдомена я изменил часть о определение сервера примерно так:
server {
listen 80;
server_name app1.domain.com;
location / {
proxy_pass http://tomcat_server/app1;
proxy_set_header X-Forwarded-Host $host;
}
}
, как предлагается на некоторых форумах, но это не работает. Я указываю, что на сервере, который управляет DNS, app1.domain.com указывает на сервер proxy.domain.com. Я видел бревна, но их не было. Что мне делать?
Спасибо
Люциана
Можно хотеть проверить установку DNS.
Я также использую несколько субдоменов, которые я создаю на лету для различных приложений с помощью веб-платформ, таких как Python Django или Ruby on Rails.
Типичный пример в mydomain.com
Я могу хотеть иметь myapp.mydomain.com
где myapp является платформой, подаваемой в my_server_IP:some_port
.
Для достижения такой вещи (много субдоменов на лету в тех же ИЛИ различных портах), я делегирую решение с DNS на веб-сервер с Подстановочным знаком, запись DNS видит Википедию. Как следует из названия такая запись производит выгоду весь домен, которым можно легко управлять от веб-сервера с использованием виртуальных хостов - доменные прокси и т.д.
A
подстановочная запись в инструменте управления DNS GoDaddy похожа на это:
Host Points To TTL
* YOUR_SERVER_IP 1 Hour
И конфигурационный файл Nginx, который передает все запросы на app.mydomain.com
кому: otherserver.com:9000/index.html
Результат: Вы вводите в браузере http://app.mydomain.com
и Nginx обслуживает содержание от otherserver.com:9000/index.html
который может быть другим сервером или приложением и т.д.
server {
listen 80;
server_name app.mydomain.com www.app.mydomain.com;
access_log /var/log/nginx/app_mydomain_com_access.log;
error_log /var/log/nginx/pp_mydomain_com_error.log;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location / {
proxy_pass http://otherserver.com:9000/index.html;
}
}
DNS был всеми правами, я делал некоторую пробную версию в локальном домене прежде, чем поместить их на производство.. Я решил более легче проблему (у меня нет index.html или любых других файлов, у меня есть только имя папки).. Наконец, я думаю, что это было бы полезно для кого-то, конфигурация:
upstream tomcat_server {
server tomcat.domain.com:8080;
}
server {
listen 80;
server_name app1.domain.com;
location / {
proxy_pass http://tomcat_server/app1/;
sub_filter /app1/ /;
}
}
"/" в конце proxy_pass необходимо...
sub_filter необходим, чтобы избежать, чтобы результат был бы чем-то как
app1.domain.com/app1
, Это - все.. Я пытаюсь улучшить эту конфигурацию для приложения, работающего с котом 6, потому что использование субдоменов могло генерировать (как в моем случае) некоторую болезнь в приложениях.