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

Я искал 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>

1 ответ

Решение

Убедитесь, что установлены и загружены следующие модули 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.

Другие вопросы по тегам