我有一个 Web 服务,我想通过 URL foo.com/bar
公开该服务。
但是我的 Apache 反向代理无法按预期工作。
我创建了文件 001-default.conf
,其中包含以下代码:
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ProxyPass /bar http://foo.com:8080/bar
ProxyPassReverse /bar foo.com:8080/bar
DocumentRoot /var/www/foo/
ServerName info.foo.com
<Directory /var/www/foo>
Options Indexes FollowSymLinks MultiViews Includes
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
现在我收到 404
错误代码。
我希望将 foo.com/bar 上的所有点击静默重定向到 foo.com:8080/bar
,这意味着用户应该只看到 URL foo.com/栏
。
反向代理重定向还应包括诸如 foo.com/bar?=foobar
之类的请求。
我确实启用了 proxy_http 和代理:
% sudo a2enmod proxy_http
Considering dependency proxy for proxy_http:
Module proxy already enabled
Module proxy_http already enabled
我希望有人能够帮助我解决这个问题。
类似的问题没有解决我的问题: apache reverse proxy changes url Transparent redirect to port 8080
最佳答案
尝试将配置编辑为:
<VirtualHost *:80>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost On
ProxyRequests Off
ProxyPass /bar http://foo.com:8080 # Note removed /bar
ProxyPassReverse /bar foo.com:8080 # Note removed /bar
DocumentRoot /var/www/foo/
ServerName info.foo.com
<Directory /var/www/foo>
Options Indexes FollowSymLinks MultiViews Includes
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
您还可以尝试使用 mod_alias 来避免您现在可能遇到的/bar/bar 问题。 我对此了解不多,请参阅文档:http://httpd.apache.org/docs/2.2/mod/mod_alias.html
尝试将其添加到您的conf中
Alias /bar http://foo.com:8080
使用此功能,您可能不想删除代理。
关于apache - 反向代理: unwanted URL change,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27109133/