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