我已经挣扎了一段时间,我肯定做错了什么.
我在同一台机器上有apache服务器和JBoss服务器.我想将mydomain.com的流量重定向到JBoss localhost:8080/example.DNS目前是为mydomain.com设置的,当它进入浏览器时它将直接进入端口80.
我的问题是当某个域名进入apache时我如何重定向到另一个端口(在本例中为"mydomain.com")?
<VirtualHost ip.addr.is.here>
ProxyPreserveHost On
ProxyRequests Off
ServerName mydomain.com
ProxyPass http://mydomain.com http://localhost:8080/example
ProxyPassReverse http://mydomain.com http://localhost:8080/example
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
更新w /建议 - 仍然没有转发到端口8080
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName mydomain.com
ServerAlias www.mydomain.com
ProxyPass http://mydomain.com http://localhost:8080/example
ProxyPassReverse http://mydomain.com http://localhost:8080/example
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
小智 203
您应该http://example.com在ProxyPass和ProxyPassReverse中省略域并将其保留为/.此外,您需要将/其末尾留在example/重定向的位置.另外,我遇到了一些麻烦http://example.com与http://www.example.com-只有WWW工作,直到我做了服务器名www.example.com和ServerAlias example.com.给出以下一点.
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName www.example.com
ServerAlias example.com
ProxyPass / http://localhost:8080/example/
ProxyPassReverse / http://localhost:8080/example/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
进行这些更改后,添加所需的模块并重新启动apache
sudo a2enmod proxy && sudo a2enmod proxy_http && sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
小智 27
我用以下代码解决了这个问题:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName myhost.com
ServerAlias ww.myhost.com
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我也用过:
a2enmod proxy_http
Run Code Online (Sandbox Code Playgroud)
Tee*_*eej 10
这可能是一个老问题,但这就是我所做的:
在 Apache 加载的 .conf 文件中:
<VirtualHost *:80>
ServerName something.com
ProxyPass / http://localhost:8080/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
说明:侦听对本地计算机端口 80 的所有请求。如果我请求“ http://something.com/somethingorother”,则将该请求转发到“ http://localhost:8080/somethingorother”。这应该适用于外部访问者,因为根据文档,它将远程请求映射到本地服务器的空间。
我正在运行 Apache 2.4.6-2ubuntu2.2,所以我不确定“-2ubuntu2.2”如何影响这个答案的更广泛的适用性。
我想这样做,所以我可以从根域访问Jenkins.
我发现我必须禁用默认站点才能使其正常工作.这正是我所做的.
$ sudo vi /etc/apache2/sites-available/jenkins
Run Code Online (Sandbox Code Playgroud)
并将其插入到文件中:
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName mydomain.com
ServerAlias mydomain
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
接下来,您需要启用/禁用相应的站点:
$ sudo a2ensite jenkins
$ sudo a2dissite default
$ sudo service apache2 reload
Run Code Online (Sandbox Code Playgroud)
希望它可以帮助某人.
您必须确保服务器上启用了代理。您可以使用以下命令来执行此操作:
a2enmod proxy
a2enmod proxy_http
service apache2 restart
Run Code Online (Sandbox Code Playgroud)
小智 5
通过反复试验发现了这一点。如果您的配置指定了ServerName,则您的VirtualHost指令将需要执行相同的操作。在以下示例中,awesome.example.com和amazing.example.com都将被转发到端口4567上运行的某些本地服务。
ServerName example.com:80
<VirtualHost example.com:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName awesome.example.com
ServerAlias amazing.example.com
ProxyPass / http://localhost:4567/
ProxyPassReverse / http://localhost:4567/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我知道这并不能完全回答问题,但是我将其放在此处是因为这是Apache端口转发的首要搜索结果。因此,我认为有一天它将对某人有所帮助。
| 归档时间: |
|
| 查看次数: |
281027 次 |
| 最近记录: |