微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Ubuntu上打开Java应用程序的端口80

我需要做的是运行一个Java应用程序,它是由Restlet提供的一个RESTful服务服务器端的书写器。 此服务将由在Google App Engine上运行的其他应用程序调用

由于GAE的限制,每个http调用都被限制在带有HttpUrlConnection类的端口80和443(http和https)。 因此,我必须在端口80或443上部署我的服务器端应用程序。

但是,由于该应用程序在Ubuntu上运行,并且这些1024以下的端口不能被非root用户访问,所以当我运行我的应用程序时,将会引发Access Deniedexception。

我想到的解决scheme包括

来自PID的Windows进程

使docker使用IPv4进行端口绑定

一个IP上托pipe多个Golang站点并根据域请求提供服务?

如何更改/查看Windows机器上的临时端口范围?

如何将用Delphi编写的基于Windows的应用程序移植到不同的平台,如Mac,iPhone和基于Web的应用程序?

将JRE的安全策略更改为grantjava.net.socketPermission“* .80”“listen,connect,accept,resolve”权限。但是,既不使用命令行要包含这个文件或者覆盖JRE的java.policy文件中的内容,同样的exception不断出现。

尝试以root用户身份login,但是因为我不熟悉Unix,我不知道该怎么做。

我还没有尝试的另一个解决scheme是将所有呼叫映射到80到像1234更高的端口,然后我可以在1234上部署我的应用程序没有问题,GAE呼叫发送请求到端口80.但如何连接缺失的差距仍然一个问题。

目前我正在使用“hacking”方法,即将应用程序打包成一个jar文件,sudo以root权限运行jar文件。 它现在可以工作,但绝对不适合在真实的部署环境中使用。

所以如果有人对解决scheme有所了解,非常感谢!

Docker暴露Flask API的端口

Apache意外关机

如何使用Nginx将address.com/foo/barredirect到address.com:port/bar?

尝试将Apache Tomcat端口从8080更改为80时出现内存错误

开发多个平台

解决方案1:它不会改变任何东西,这不是一个Java限制,它是阻止您使用特权端口号(低于1024的端口)的操作系统。

解决方案2:海事组织不是一个好主意,有很好的理由不以root身份运行进程。

解决方案3:使用setcap或iptables 。 看到这个前面的问题 。

你可以使用iptables来重定向使用这样的东西:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport http -j REDIRECT --to-ports 8080

使更改永久(重新启动后保留):

iptables-save

更简单的解决方法是在Apache httpd中设置一个反向代理,Ubuntu将从/etc/init.d的80端口为您运行。

还有一些使用iptables的方法,但是我没有最近的个人经验。 我现在有一个这样的代理服务器。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐