在 Linux 服务器上为单个网站分配不同的端口号,单个 IP 上有多个站点

在 Linux 服务器上为单个网站分配不同的端口号,单个 IP 上有多个站点

我有 Linux VPS。 配置 Linux CentOS 带有 cPanel 默认端口:80

服务器正在运行 Apache for PHP(cPanel 中的默认设置)Tomcat 5.5.33

我只为它分配了 1 个 IP。上面托管了多个域名。

我的问题: 所有域都在端口 :80 上运行,但我只需要 1 个域在端口 :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

答案1

如果我理解正确的话,您想通过简单地访问 www.example.com 来透明地访问 www.example.com:8080 上的 tomcat 内容 - 有几种方法可以做到这一点:

1)如果你启用了 mod-rewrite,请在 vhost 定义或 .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

答案2

您有两类选项:重定向或反向代理(VirtualHost如果您只需要一个主机名,则可以在特定配置中执行此操作)。

mod_rewrite可以使用(如@OG 所说)来完成重定向。

由于运行在端口 8080 上的服务器实际上与运行在端口 80 上的 Apache HTTPD 是不同的服务器,因此mod_rewrite无法在内部重写 URL(因此它仅在重定向模式下有效)。相反,您可以使用反向代理方法:

  • mod_jk2(来自@O G 的链接)是被认为是“历史性的”
  • mod_jk相当稳定,但它依赖于 AJP 协议,因此您不需要在 Tomcat 配置上启用它(可能不在端口 8080 上)。
  • mod_proxy_ajp也相当稳定,通常默认随 Apache HTTPD 一起提供(与 不同mod_jk),至少 2.2 版如此。它还使用 AJP 协议,因此您也需要相应地配置 Apache Tomcat。
  • 否则,您可以使用 HTTP 反向代理,mod_proxy_http(无需 AJP)。

答案3

我从之前的帖子中给出的提示中找到了解决方案

.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

相关内容