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щоб дістатися до того самого місця / сторінки, опублікованого цими додатками.

EDIT 2: From / 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, правда? Якщо так, чи можете ви розмістити весь вміст vhost, якщо це можливо? тобто <VirtualHost 10.0.0.1:80 > ServerName server.domain.com DocumentRoot /usr/local/apache/htdocs </VirtualHost>
Маркос Веласкес

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

Відповіді:


13

Переконайтесь, що встановлені та завантажені наступні модулі apache:

mod_proxy
mod_proxy_http
mod_ssl

Ви можете перевірити, виконуючи таку команду як корінь (якщо припустити, що 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, але без успіху. Чи "Дозволити від" та " localhost " поруч із ProxyPass щодо сервера чи відносно того, що намагається отримати доступ до нього?
Serneum

Зрозуміло, виконуючи дозвіл на всіх тимчасово. Недоліком є ​​те, що на сторінці не відображається жодний css тощо, але це зовсім окреме питання, яке я буду розглядати самостійно. Дякую.
Serneum

До якого файлу конфігурації мені потрібно додати 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?
kiltek

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