转发端口 80 至 8080 失败

转发端口 80 至 8080 失败

我正在尝试将端口从 80 转发到 8080(默认为 tomcat)。下面是我添加到 httpd 文件的内容。

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

添加此内容后,没有任何变化的迹象。代码有什么问题吗?
Centos 5.9
apache 2.2
tomcat 7
whm/cpanel。

更新: 在此处输入图片描述 我的目标域名是 www.99rounds.com:80 直接到 :8080

更新 2 在添加了答案中的代码并删除了 2 行日志后,我得到: 在此处输入图片描述 请注意,centos 具有内置的 mod_proxy 支持,如果我强制它:loadModule ... 它会给我一个错误,说它是内置的。

答案1

我对如何设置 Apache 反向代理有一个详细的答案在这里

查看您提供的配置:

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

我建议改为以下操作。我假设了一些内容(例如 ErrorLog 和 CustomLog),但这就是我的设置方式。我认为关键是ServerName&ServerAlias与 的组合<VirtualHost *:80>

<VirtualHost *:80>
  ServerName www.99rounds.com
  ServerAlias 99rounds.com www.99rounds.com

  ErrorLog /var/log/apache2/www.99rounds.com.error.log
  CustomLog /var/log/apache2/www.99rounds.com.access.log combined

  # Settings for Apache Reverse Proxy
  <IfModule mod_proxy.c>

    # Proxy specific settings
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
      AddDefaultCharset off
      Order deny,allow
      Allow from all
    </Proxy>

    ProxyPass / http://localhost:8080/ 
    ProxyPassReverse / http://localhost:8080/ 

  </IfModule>

</VirtualHost>

编辑:另请确保您的服务器上已启用以下功能mod_proxymod_proxy_http

sudo a2enmod proxy
sudo a2enmod proxy_http

答案2

Tomcat 和其他应用服务器发布了一个 AJP 端口,可用于映射来自 HTTP 服务器的请求。为此,您必须创建一个“workers 文件”,如下所示:

# server.workers.properties

worker.list=tomcat-server

worker.tomcat-server.type=ajp13
worker.tomcat-server.host=localhost
worker.tomcat-server.port=8009

Tomcat 服务器中 AJP 端口的默认值是 8009。您可以在 $TOMCAT_DIR$/conf/server.xml 中找到此值。然后您必须在 HTTP 配置文件中指明上一个文件:

JkWorkersFile /location/of/the/file/server.workers.properties

<VirtualHost www.example.com:80> 
  ServerName www.example.com
  ServerAlias example.com
  DocumentRoot /srv/www/
  JkMount /* tomcat-server 

  <Directory />
    Options +FollowSymLinks
    Order allow,deny
    Allow from all
  </Directory>

</VirtualHost>

此配置将把 www.example.com:80 的所有请求传递到 AJP 8009 端口,因此 Tomcat 服务器将获取这些请求并对其进行处理。

在 DocumentRoot 设置的路径中,您必须将每个应用程序的链接放在 Tomcat 的 webapps 目录中,因为如果不这样做,HTTP 服务器将无法加载资源文件,如 CSS 和 JS。

相关内容