我一直在 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,则代理现在应该可以工作。