Ошибка при запуске Jetty Server на порту 80 от имени пользователя без полномочий root

Все,

Я пытался установить причал на порту 80, но его выдача исключение говорит, что разрешение отклонено, как показано ниже. Я настроил jetty для работы с setuid и настроил start.ini следующим образом:

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

(ниже в качестве первого файла конфигурации в start.ini)

etc/jetty-setuid.xml

и jetty-setuid. XML-файл с именем пользователя и именем группы пользователя без полномочий root.

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 SelectChannelConnector@0.0.0.0: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$1.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
7
задан 5 July 2012 в 18:56

2 ответа

Порты ниже 1024 могут быть связаны только суперпользователем. Вы можете запустить Jetty как суперпользователь (root) или настроить его для использования порта выше 1024 (скажем, 8080, это обычно делается для серверов приложений на основе Java). Если вы хотите, чтобы это было доступно через порт 80 любой ценой, вы можете настроить сервер Apache для пересылки (или «обратного прокси») запросов в Jetty. Это четко задокументировано здесь:

http://docs.codehaus.org/display/JETTY/Configuring+mod_proxy

0
ответ дан 5 July 2012 в 18:56

Оставьте Apache для людей Tomcat, перейдите на Nginx и эти простые строки

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;
    }
} 
0
ответ дан 5 July 2012 в 18:56

Другие вопросы по тегам:

Похожие вопросы: