ProxyPass:将目录 URL 重定向到非标准端口

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 内部,但我并不完全确定。基本上,我对 Web 服务器设置知之甚少,我需要得到这样的对待。

对于任何错误的标签,我深感抱歉,并感谢您花时间阅读该帖子以及您提供的任何帮助。

编辑:为澄清起见,这些应用程序已经可以通过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,则代理现在应该可以工作。

相关内容