Apache重定向到另一个端口

Apache重定向到另一个端口,apache,redirect,Apache,Redirect,我已经为此挣扎了一段时间,肯定是做错了什么 我在同一台机器上有apache服务器和JBoss服务器。我想将mydomain.com的流量重定向到JBoss localhost:8080/example。当前正在为mydomain.com设置DNS,当输入浏览器时,它将直接进入端口80 我的问题是,当某个域名进入apache(在本例中为“mydomain.com”)时,如何重定向到其他端口 代理主机 代理请求关闭 ServerName mydomain.com ProxyPasshttp://m

我已经为此挣扎了一段时间,肯定是做错了什么

我在同一台机器上有apache服务器和JBoss服务器。我想将mydomain.com的流量重定向到JBoss localhost:8080/example。当前正在为mydomain.com设置DNS,当输入浏览器时,它将直接进入端口80

我的问题是,当某个域名进入apache(在本例中为“mydomain.com”)时,如何重定向到其他端口


代理主机
代理请求关闭
ServerName mydomain.com
ProxyPasshttp://mydomain.com http://localhost:8080/example
ProxyPassReversehttp://mydomain.com http://localhost:8080/example
更新了建议 -仍然没有转发到端口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> 

代理主机
代理请求关闭
ServerName mydomain.com
ServerAlias www.mydomain.com
ProxyPasshttp://mydomain.com http://localhost:8080/example
ProxyPassReversehttp://mydomain.com http://localhost:8080/example

如果您不必使用JBoss和mydomain.com的代理:8080可以“公开”给世界,那么我会这样做

<VirtualHost *:80>
  ServerName mydomain.com
  Redirect 301 / http://mydomain.com:8080/
</VirtualHost>

ServerName mydomain.com
重定向301/http://mydomain.com:8080/

Apache支持基于名称和基于IP的虚拟主机。看起来您两个都在使用,这可能不是您所需要的

我认为您实际上正在尝试设置,因此不需要指定IP地址

尝试绑定到所有IP地址,除非您真的需要。如果服务器有多个IP地址,并且您希望在不同的地址上为不同的站点提供服务,则可能会出现这种情况。最常见的设置是(我猜)基于名称的虚拟主机。

您需要两件事:

  • 服务器别名www.mydomain.com
    添加到配置中
  • 将proxypass更改为
    ProxyPassMatch^(.*)$http://localhost:8080/example$1
    ,以防止mod_dir和尾部斜杠出现错误

  • 您应该省略域
    http://example.com
    在ProxyPass和ProxyPass中反转,并将其保留为
    /
    。此外,您需要将
    /
    示例/末尾的
    /
    保留到重定向的位置。另外,我在
    http://example.com
    vs.
    http://www.example.com
    -在我创建ServerName www.example.com和ServerAlias example.com之前,只有www工作。试一试下面这句话

    <VirtualHost *:80> 
      ProxyPreserveHost On
      ProxyRequests Off
      ServerName www.example.com
      ServerAlias example.com
      ProxyPass / http://localhost:8080/example/
      ProxyPassReverse / http://localhost:8080/example/
    </VirtualHost> 
    

    我用以下代码解决了这个问题:

    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>
    

    我想这样做,这样我就可以从根域访问Jenkins

    我发现我必须禁用默认站点才能使其正常工作。这就是我所做的

    $ sudo vi /etc/apache2/sites-available/jenkins
    
    并将其插入文件:

    <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>
    

    希望它能帮助别人。

    在apache配置中使用反向代理即可(直接):


    这可能是个老问题,但以下是我所做的:

    在apache加载的.conf文件中:

    <VirtualHost *:80>
      ServerName something.com
      ProxyPass / http://localhost:8080/
    </VirtualHost>
    

    通过反复试验发现了这一点。如果您的配置指定了一个服务器名,那么VirtualHost指令也需要这样做。在下面的示例中,awesome.example.com和mazing.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>
    
    ServerName-example.com:80
    代理主机
    代理请求关闭
    ServerName awesome.example.com
    ServerAlias.example.com
    ProxyPass/http://localhost:4567/
    ProxyPassReverse/http://localhost:4567/
    

    我知道这并不能完全回答这个问题,但我把它放在这里是因为这是Apache端口转发的顶级搜索结果。因此,我认为有一天它会帮助某些人。

    您必须确保在服务器上启用了代理。可以使用以下命令执行此操作:

      a2enmod proxy
      a2enmod proxy_http
    
      service apache2 restart
    

    所有这些都是通过虚拟服务器上的域名访问端口的优秀见解。但是,不要忘记启用虚拟服务器;这可能会被注释掉:

    NameVirtualHost *:80
    <Directory "/home/dawba/www/">
     allow from all
    </Directory>
    
    NameVirtualHost*:80
    通融
    
    我们在域sxxx.com上使用Apache服务器运行WSGI,在端口6800上使用golang服务器运行WSGI。有些防火墙似乎用端口阻止域名。这就是我们的解决方案:

    <VirtualHost *:80>
     ProxyPreserveHost On
     ProxyRequests Off
     ServerName wsgi.sxxxx.com
     DocumentRoot "/home/dxxxx/www"
      <Directory "/home/dxxx/www">
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
      </Directory>
     ScriptAlias /py/ "/home/dxxxx/www/py/"
     WSGIScriptAlias /wsgiprog /home/dxxxx/www/wsgiprog/Form/Start.wsgi
    </VirtualHost>
    
    <VirtualHost *:80>
     ProxyPreserveHost On
     ProxyRequests Off
     ServerName sxxxx.com 
     ServerAlias www.sxxxx.com
     ProxyPass / http://localhost:6800/
     ProxyPassReverse / http://localhost:6800/
    </VirtualHost>
    
    
    代理主机
    代理请求关闭
    服务器名wsgi.sxxx.com
    DocumentRoot“/home/dxxx/www”
    选项索引跟随符号链接
    不允许超限
    命令允许,拒绝
    通融
    ScriptAlias/py/“/home/dxxx/www/py/”
    WSGIScriptAlias/wsgiprog/home/dxxx/www/wsgiprog/Form/Start.wsgi
    代理主机
    代理请求关闭
    服务器名sxxx.com
    ServerAlias www.sxxx.com
    ProxyPass/http://localhost:6800/
    ProxyPassReverse/http://localhost:6800/
    
    我的apache监听两个不同的端口

    Listen 8080
    Listen 80  
    
    当我想要一个透明的URL并且不将端口放在URL之后时,我使用80 对于不允许本地url的google服务有用吗


    但是我使用8080进行内部开发,我使用端口作为“开发环境”的参考,这在ISPConfig中也可以使用。在“网站列表”中进入域,单击“选项”选项卡,添加以下行:

    ProxyPass / http://localhost:8181/
    ProxyPassReverse / http://localhost:8181/
    
    然后转到网站和wolaa:)这也是有效的HTTPS协议。

    试试这个-

    <VirtualHost *:80> 
      ProxyPreserveHost On
      ProxyRequests Off
      ServerName www.adminbackend.example.com
      ServerAlias adminbackend.example.com
      ProxyPass / http://localhost:6000/
      ProxyPassReverse / http://localhost:6000/
      ErrorLog ${APACHE_LOG_DIR}/error.log
      CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost> 
    
    
    代理主机
    代理请求关闭
    服务器名www.adminbackend.example.com
    ServerAlias adminbackend.example.com
    ProxyPass/http://localhost:6000/
    ProxyPassReverse/http://localhost:6000/
    ErrorLog${APACHE_LOG_DIR}/error.LOG
    CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
    
    看起来不错。你的症状是什么?症状是我将www.mydomain.com放在浏览器中,但它会转到apache根目录。相反,我希望它重定向到jboss子目录localhost:8080/subdr。我目前正在将各个域直接重定向到端口80,但无法使其转到另一个端口。我有完全相同的请求:你找到解决方案了吗?@Cystack-我无法使其正常工作。我
      a2enmod proxy
      a2enmod proxy_http
    
      service apache2 restart
    
    NameVirtualHost *:80
    <Directory "/home/dawba/www/">
     allow from all
    </Directory>
    
    <VirtualHost *:80>
     ProxyPreserveHost On
     ProxyRequests Off
     ServerName wsgi.sxxxx.com
     DocumentRoot "/home/dxxxx/www"
      <Directory "/home/dxxx/www">
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
      </Directory>
     ScriptAlias /py/ "/home/dxxxx/www/py/"
     WSGIScriptAlias /wsgiprog /home/dxxxx/www/wsgiprog/Form/Start.wsgi
    </VirtualHost>
    
    <VirtualHost *:80>
     ProxyPreserveHost On
     ProxyRequests Off
     ServerName sxxxx.com 
     ServerAlias www.sxxxx.com
     ProxyPass / http://localhost:6800/
     ProxyPassReverse / http://localhost:6800/
    </VirtualHost>
    
    Listen 8080
    Listen 80  
    
    ProxyPass / http://localhost:8181/
    ProxyPassReverse / http://localhost:8181/
    
    <VirtualHost *:80> 
      ProxyPreserveHost On
      ProxyRequests Off
      ServerName www.adminbackend.example.com
      ServerAlias adminbackend.example.com
      ProxyPass / http://localhost:6000/
      ProxyPassReverse / http://localhost:6000/
      ErrorLog ${APACHE_LOG_DIR}/error.log
      CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>