我尝试配置 apache2 反向代理:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /stag http://127.0.0.1:9001
ProxyPassReverse /stag http://127.0.0.1:9001
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 /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
我的 Play 实例在 运行localhost:9001
,当我尝试调用它时成功,并且尝试调用 时http://192.168.1.10:9001
无法加载 play 项目文件夹中的所有文件(图像、css、js)。当我检查网址(在谷歌浏览器上使用 F12)时,它应该显示。public
http://192.168.1.10/stag
http://192.168.1.10/public/images/logo.png
http://192.168.1.10/stag/public/images/logo.png
我的问题,我的 apache2 反向代理配置有问题吗?
答案1
Apache 配置很好,问题出在你的 HTML 内容上。
如果您的 HTML 指向根目录..
<img src="/public/images/logo.png">
然后它指向根目录,并且/stag
您的代理实际上添加的前缀将被忽略。您的ProxyPass
代理ProxyPassReverse
不会为您翻译此内容。
另一方面,如果您允许路径是相对的......
<img src="public/images/logo.png">
然后,相对路径被保留并且资源可以加载。
还有一些类似的工具mod_proxy_html
试图翻译 HTML 文件中的路径,但它们并非万无一失;更好的选择是使内容在代理内工作。