Spring Boot在端口80上运行app

我无法在端口80上启动应用程序。我在IDE和服务器上试过本地计算机,没有运气。 我检查了其他类似的post,并确保我在root服务器上运行jar。

这是错误:

till here all ok ... java.net.SocketException: Permission denied at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Net.java:433) at sun.nio.ch.Net.bind(Net.java:425) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:338) at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:760) at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:472) at org.apache.catalina.connector.Connector.startInternal(Connector.java:986) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.StandardService.addConnector(StandardService.java:237) at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.addPreviouslyRemovedConnectors(TomcatEmbeddedServletContainer.java:186) at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:149) at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:288) at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:141) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:483) at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686) at org.springframework.boot.SpringApplication.run(SpringApplication.java:320) at org.springframework.boot.SpringApplication.run(SpringApplication.java:957) at org.springframework.boot.SpringApplication.run(SpringApplication.java:946) at com.andirod.StartApplication.main(StartApplication.java:20) ... ... ... Exception in thread "main" java.lang.IllegalStateException: Tomcat connector in failed state at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:157) at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:288) at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:141) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:483) at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686) at org.springframework.boot.SpringApplication.run(SpringApplication.java:320) at org.springframework.boot.SpringApplication.run(SpringApplication.java:957) at org.springframework.boot.SpringApplication.run(SpringApplication.java:946) at com.andirod.StartApplication.main(StartApplication.java:20) 

在linux下,1024以下的端口只能由root打开,因此默认情况下端口80受限制

如果你想在80端口上发布你的应用程序,你需要将请求从端口80重定向到你将运行springapp(例如8080)端口的端口

您可以使用apache2服务器,默认情况下允许在端口80上工作,并可以将请求转发给tomcat

debian的示例配置

 apt-get install apache2 a2enmod proxy a2enmod proxy_http cd /etc/apache2/sites-enabled  ProxyPreserveHost On ... ProxyPass / http://localhost:8080/  

service apache2 restart

或使用iptables进行重定向

iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-port 8080

如果你需要使用localhost也添加这个

iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 –dport 80 -j REDIRECT –to-ports 8080

刚遇到这个问题。 我在Ubuntu AWS实例上运行Spring Boot应用程序。

java -jar app.jar --server.port=80会像你描述的那样给我一个错误。 解决方案,因为1024以下的端口只能由root打开,添加“sudo”。 sudo java -jar app.jar --server.port=80

由于安全问题,这种部署方式仅建议用于本地测试。 请参阅评论了解详情

-Djava.net.preferIPv4Stack=true添加到VM选项

JavaMail API到iMail – java.net.SocketException:权限被拒绝:连接