如何在 Linux 上重定向端口号?

如何在 Linux 上重定向端口号?

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

另一个是使用iptableshttp://www.cyberciti.biz/faq/linux-port-redirection-with-iptables/

答案3

您永远不应该将 Tomcat 或任何其他 Java 应用程序服务器面向外部世界。最佳做法是安装 Apache HTTPD 并使用它作为反向代理来包装 Tomcat 或 JBoss。

我建议执行以下操作。

  1. 安装httpd

    yum 安装 httpd
  2. 创建文件

    /etc/httpd/conf.d/myredirect.conf
    内容如下:

    代理通行证 http://127.0.0.1:8080/myapps/
    ProxyPassReverse http://127.0.0.1:8080/myapps/
    
  3. 如果应用程序驻留在根目录中,则配置将如下所示:

    代理通行证 http://127.0.0.1:8080/
    ProxyPassReverse http://127.0.0.1:8080/
    
  4. 重新开始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

相关内容