Erro ao executar o Jetty Server na porta 80 como usuário não root

5

Tudo,

Eu estava tentando configurar o Jetty na porta 80, mas a exceção está dizendo permissão negada como abaixo. Eu configurei o jetty para trabalhar com o setuid e configurei o start.ini da seguinte forma:

OPTIONS=Server,jsp,jmx,resources,websocket,ext,plus,annotations,jta,jdbc,setuid

(abaixo como primeiro arquivo de configuração em start.ini)

etc/jetty-setuid.xml

e o arquivo jetty-setuid.xml com o nome de usuário e o nome do grupo do usuário não raiz.

2012-07-03 15:29:02.411:INFO:oejdp.ScanningAppProvider:Deployment monitor /opt/jetty-hightide-8.1.3.v20120416/contexts at interval 1
2012-07-03 15:29:02.454:WARN:oejuc.AbstractLifeCycle:FAILED [email protected]:80: java.net.SocketException: Permission denied
java.net.SocketException: Permission denied
        at sun.nio.ch.Net.bind(Native Method)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:126)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)
        at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:182)
        at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:311)
        at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:260)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
        at org.eclipse.jetty.server.Server.doStart(Server.java:273)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
        at org.eclipse.jetty.xml.XmlConfiguration.run(XmlConfiguration.java:1215)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1138)
2012-07-03 15:29:02.455:WARN:oejuc.AbstractLifeCycle:FAILED org.eclipse.jetty.server.Server@66da9ea4: java.net.SocketException: Permission denied
java.net.SocketException: Permission denied
    
por user75016 04.07.2012 / 18:24

2 respostas

9

As portas abaixo de 1024 só podem ser vinculadas pelo superusuário. Você pode executar o jetty como superusuário (root) ou configurá-lo para usar uma porta acima de 1024 (por exemplo, 8080, isso geralmente é feito para servidores de aplicativos baseados em Java). Se você quiser que isso seja acessível através da porta 80 a todo custo, você pode configurar um servidor Apache para encaminhar solicitações (ou "proxy reverso") para o Jetty. Isso está claramente documentado aqui:

link

    
por roadmr 05.07.2012 / 17:02
1

Deixe o Apache para o pessoal do Tomcat, escolha Nginx e essas linhas simples

server {
    listen 80;
    server_name localhost;
    access_log /var/log/nginx/example.log;

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_redirect off;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
} 
    
por CESCO 05.11.2015 / 02:22