在单个IP上使用多站点在Linux服务器上单独分配一个网站的不同端口号

我有Linux VPS。 使用cPanel configuration Linux CentOS默认端口:80

为PHP 运行 Apache的服务器 (默认在cPanel中)Tomcat 5.5.33

我只有一个IP分配给它。 在其上托pipe多个域。

我的问题:所有的域都运行在端口:80,但我只需要我的域中的一个运行在端口:8080

我可以访问我的域名www.example.com:8080,但我需要访问它作为www.example.com(8080应交付,而不是默认的80)

我的参考 http://httpd.apache.org/docs/2.0/vhosts/examples.html http://library.linode.com/lamp-guides/centos-6

如果我理解正确,只需访问www.example.com,就可以透明地访问www.example.com上的tomcat内容:8080 – 有几种方法可以执行此操作:

1)如果你已经启用了mod-rewrite,请在你的虚拟主机定义或者.htaccess文件中尝试类似的方法

RewriteEngine on RewriteCond %{SERVER_PORT} !^8080$ RewriteRule ^(.*) http://%{SERVER_NAME}:8080%{REQUEST_URI} 

2)如果你想代理它(需要启用mod_proxy_http) http://tomcat.apache.org/connectors-doc-archive/jk2/proxy.html

您有两种select:redirect或反向代理(如果您只需要一个主机名,您可以在特定的VirtualHostconfiguration中执行此操作)。

redirect可以使用mod_rewrite完成(如@OG所示)。

由于在端口8080上运行的服务器实际上是与端口80上的Apache HTTPD不同的服务器,所以mod_rewrite不能在内部重写URL(所以它只能在redirect模式下工作)。 相反,您可以使用反向代理方法:

  • mod_jk2 (来自@ OG的链接)被认为是“历史”的 。
  • mod_jk是相当稳定的,但它依赖于AJP协议,所以你不需要在你的Tomcatconfiguration(可能不在端口8080)上启用它。
  • mod_proxy_ajp也相当稳定,并且通常默认使用Apache HTTPD(与mod_jk不同),至less在2.2版本中是如此。 它也使用AJP协议,所以你也需要configurationApache Tomcat。
  • 否则,你可以使用一个HTTP反向代理,使用mod_proxy_http (不需要AJP)。

我已经find了以前的post给出的解决scheme

.htaccess文件

 RewriteEngine on RewriteBase / RewriteRule ^admin(.*)$ http://example.com/tryAdmin$1 [R,L] RewriteRule ^(.*)$ http://example.com/try/$1 [R,L] 

/usr/local/apache/conf/userdata/std/2/tryord/example.com/extra.conf

 ProxyPass /try http://example.com:8080/try ProxyPassReverse /try http://example.com:8080/try ProxyPass /tryAdmin http://example.com:8080/tryAdmin ProxyPassReverse /tryAdmin http://example.com:8080/tryAdmin 

参考 http://tomcat.apache.org/tomcat-6.0-doc/proxy-howto.html#Apache_2.0_Proxy_Support

Apache – /etc/httpd/conf/httpd.conf Tomcat – /usr/local/jakarta/apache-tomcat-5.5.33/conf/server.xml

包括

 /usr/local/apache/modules/mod_proxy.so