ProxyPass: перенаправить URL каталога на нестандартный порт


13

Я искал Google и не имел большого успеха в поиске ответа. Я использую сервер в Ubuntu, и у меня установлены программы, использующие различные нестандартные порты. Каждый из них использует свой порт, в моем случае это 9090, 9091, 9092, 9093 и 9094. Я настроил сервер Apache и имею доменное имя, которое теперь может достигать моего сервера вместо того, чтобы вводить мой IP-адрес. То, что я ищу, - это способ создания каталогов, которые могут указывать на разные порты, которые я перечислил. Я хочу что-то вроде:

https://www.mydomain.com/app1
https://www.mydomain.com/app2
http://www.mydomain.com/app3

Некоторые порты по SSL, некоторые нет, я просто привел их в порядок (9090-9094) для удобства использования с моей стороны. Я бы хотел, чтобы / app1 указывал на SSL-порт 9090, / app2 указывал на SSL-порт 9091 и / app3 указывал на не-SSL-порт 9092. Есть ли простой способ сделать это? Я пытался добавить ProxyPass и тому подобное на основе других сообщений, но ничего не помогло. Нужно ли добавлять новый сайт?

Кроме того, если это связано с редактированием файлов, что, как я ожидаю, произойдет, было бы очень полезно, если бы вы могли указать местоположение файла по умолчанию и куда добавлять вещи. Я продолжал видеть сообщения, в которых говорилось о добавлении ProxyPass, поэтому я предположил, что это происходит внутри VirtualHost, но я не был полностью уверен. По сути, я очень мало знаю о настройке веб-сервера, и мне нужно относиться к нему как к такому.

Я прошу прощения за любые неправильные теги, и я ценю время, которое вы потратили на чтение поста и любую помощь, которую вы можете предоставить.

РЕДАКТИРОВАТЬ: Для пояснения, приложения уже доступны через https://www.mydomain.com:9090и т. Д. Я просто хотел бы использовать способ, https://www.mydomain.com/appNameчтобы добраться до того же места / страницы, опубликованной этими приложениями.

РЕДАКТИРОВАТЬ 2: Из / etc / apache2 / sites-available / default

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass /app1 https://localhost:9090/
    ProxyPassReverse /app1 https://localhost:9090/
</VirtualHost>

Можете ли вы опубликовать вывод директив конфигурации, которые вы использовали для настройки? Если они внутри vhost, можете ли вы опубликовать весь vhost?
— Маркос Веласкес

Что настроить? Порты? Все порты настроены через пользовательский интерфейс соответствующих программ, и я ищу способ избежать ввода портов при доступе к каждому приложению на моем сервере. Я могу копаться в приложениях, чтобы увидеть, что я могу найти, но порты обычно просто хранятся в файле config.ini
— Serneum

Нет не это. Я имел в виду, что, если вы используете ProxyPass и другие вещи, вы, должно быть, разместили их внутри виртуального хостинга, верно? Если да, можете ли вы публиковать весь контент vhost, если это возможно? то есть <VirtualHost 10.0.0.1:80 > ServerName server.domain.com DocumentRoot /usr/local/apache/htdocs </VirtualHost>
— Маркос Веласкес

Я отменил большинство своих изменений, чтобы получить чистую доску перед тем, как обратиться за помощью. Я просто добавил файл / etc / apache2 / sites-available / default, который у меня есть, и в конце добавил материал Proxy, основываясь на том, что я видел на других сайтах / поисках
— Serneum

Ответы:


13

Убедитесь, что установлены и загружены следующие модули apache:

mod_proxy
mod_proxy_http
mod_ssl

Вы можете проверить, выполнив следующую команду от имени пользователя root (при условии, что httpd находится в вашем $ PATH)

httpd -t -D DUMP_MODULES

После этого попробуйте изменить вашу конфигурацию следующим образом:

ProxyRequests Off
<Proxy *>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Proxy>
SSLProxyEngine on
ProxyPass /app1 https://localhost:9090
ProxyPassReverse /app1 https://localhost:9090

Прокси теперь должен работать, если вы посещаете http://localhost/app1или http://mydomain.com/app1предполагаете, что mydomain.com указывает на localhost.


Та же проблема, что и раньше, я понятия не имею, как установить mod_proxy, и a2enmod mod_proxy говорит, что mod_proxy не существует. Я буду продолжать искать, как получить эти 3 мода, чтобы я мог заставить вещи работать. При этом у меня есть прокси, proxy_http и ssl, работающие прямо сейчас. Если это то, что мне нужно, то это решение все еще не работает. Я получаю Запрещенное сообщение, которое, как я полагаю, может быть связано с «Разрешить с 127.0.0.1», но я не совсем уверен
— Serneum

Примечание: mydomain.com указывает на мой внешний IP, а не на localhost. Я попытался изменить localhost: 9090 на свой ip: 9090, но безуспешно. Является ли «Разрешить от» и « локального хоста » рядом с ProxyPass по отношению к серверу или относительно того , что пытается получить к нему доступ?
— Сернеум

Получил работу, сделав Allow from all временно. Недостатком является то, что на странице не отображается css и т. Д., Но это отдельная проблема, которую я рассмотрю самостоятельно. Благодарю.
— Сернеум

В какой файл конфигурации мне нужно добавить ProxyRequests Off <Proxy *> Order deny,allow Deny from all Allow from 127.0.0.1 </Proxy> SSLProxyEngine on ProxyPass /app1 https://localhost:9090 ProxyPassReverse /app1 https://localhost:9090?
— килтек

Не показанные ресурсы страницы могут не быть отдельной проблемой. Директива ProxyPass здесь применяется только к документу (app1). В каталог Proxy app1 со всем его содержимым добавьте косые черты. ProxyPass /app1/ https://localhost:9090/и то же самое для ProxyPassReverse, если используется. А во-вторых, добавьте редирект RewriteRule: тогда RewriteRule ^/app1$ /app1/ [R]/ app1 не будет проксироваться.
— Папа
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.