我的 Linux 机器上的 8080 端口上有一个 Tomcat 应用程序正在运行 ( www.myapplication.com:8080/myapps
)。
我想将 Tomcat 端口重定向:8080
到默认 HTTP 端口,:80
以便无需端口号即可访问应用程序(www.myapplication.com/myapps
)。
我如何在 Linux 上做到这一点?
答案1
您可以使用iptables
将端口 80 重定向至 8080。
如果您的应用程序是由非特权用户而不是 root 用户启动的,这将很有用。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
HTH,PEra
答案2
有很多方法可以实现这一点,但我首先想到的是使用nginx
:如何使用 nginx 将端口 8080 的 URL 永久重定向到端口 80
另一个是使用iptables
:http://www.cyberciti.biz/faq/linux-port-redirection-with-iptables/
答案3
您永远不应该将 Tomcat 或任何其他 Java 应用程序服务器面向外部世界。最佳做法是安装 Apache HTTPD 并使用它作为反向代理来包装 Tomcat 或 JBoss。
我建议执行以下操作。
安装httpd:
yum 安装 httpd
创建文件
/etc/httpd/conf.d/myredirect.conf
内容如下:代理通行证 http://127.0.0.1:8080/myapps/ ProxyPassReverse http://127.0.0.1:8080/myapps/
如果应用程序驻留在根目录中,则配置将如下所示:
代理通行证 http://127.0.0.1:8080/ ProxyPassReverse http://127.0.0.1:8080/
重新开始httpd:
服务 httpd 重启
以上说明适用于 RedHat 系列 Linux。其他版本可能有所不同。
答案4
对于真正快速、临时、瑞士军刀式实用类型的解决方案,可能根本不需要安装任何东西:
在另一个终端中,当已经登录到机器时,打开到本地主机的 ssh 端口转发会话,如下所示:
$ ssh -L:1111:localhost:2222 localhost
您应该会看到以下内容(或至少是第一行)。您可能需要提供您的密码。
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
上述操作会将端口 1111 的流量转发到端口 2222。
因此,对于 OP 来说:
$ ssh -L:8080:localhost:80 localhost