AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 124537
Accepted
Chris Lercher
Chris Lercher
Asked: 2010-03-21 05:01:23 +0800 CST2010-03-21 05:01:23 +0800 CST 2010-03-21 05:01:23 +0800 CST

authbind、privbind 或 iptables REDIRECT(端口 80 到 8080)?

  • 772

我想在 Linux (Debian) 上以非特权用户身份运行 Glassfish v3,但使其在端口 80 上可用。我目前正在使用 iptables 执行此操作:

iptables -t nat -I PREROUTING -p tcp -d x.x.x.x --dport 80 -j REDIRECT --to-port 8080

这有效,但我想知道:

  1. 如果这与直接绑定到端口 80 相比有任何显着的性能影响
  2. 如果我可以进行类似的设置也适用于 HTTPS(或者如果必须在 443 上运行)
  3. 如果有办法避免其他用户绑定到端口 8080(以防我的服务器崩溃) - 也许以某种方式永久阻止该端口对其他用户?

...或者如果我应该使用 authbind/privbind 代替?问题:到目前为止,我无法使其与 authbind 或 privbind 一起使用。

对于authbind,我将 asadmin 的最后一行编辑为:

exec authbind --deep "$JAVA" -Djava.net.preferIPv4Stack=true -jar ...

对于privbind:

exec privbind -u glassfish "$JAVA" -Djava.net.preferIPv4Stack=true -jar ...

(仅)通过这些设置,我可以成功执行create-domain --domainport 80. 这证明,authbind 和 privbind 确实有效(脚本的 authbind 版本由 glassfish 用户调用;privbind 版本当然由 root 调用)。但是,在这两种情况下,在启动域 ( ) 时,我都会遇到以下异常start-domain:

[#|2010-03-20T13:25:21.925+0100|SEVERE|glassfishv3.0|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=11;_ThreadName=FelixStartLevel;|Shutting down v3 due to startup exception : Permission denied: 80=com.sun.enterprise.v3.services.impl.monitor.MonitorableSelectorHandler@1fc25e5|#]

我还没有找到解决方案(在网上搜索之后,这似乎不是那么容易?)但也许,使用 iptables 的解决方案已经足够好了 - 你觉得呢?

谢谢,

克里斯

笔记:

在我的情况下,将 Apache 放在前面并不是一个好的解决方案——我计划使用 Comet,而 Comet 在没有代理的情况下工作得更好。

glassfish
  • 2 2 个回答
  • 5728 Views

2 个回答

  • Voted
  1. Best Answer
    Warner
    2010-03-21T08:19:22+08:002010-03-21T08:19:22+08:00

    我在生产中一直使用 NAT。虽然它更常用于在 Intranet 和 Internet 之间进行转换,但以这种方式使用它也是完全可以接受的。对于几乎相同的情况,我做了类似的事情。话虽如此,还有其他选择。

    应用程序服务器和 Web 服务器经常一起运行,因此在内部将 Java 保留在 8080 和 8443 上是有意义的。更常见的是,人们可能会使用 Apache 作为代理将某些请求转换为 Java,并从 Apache 实例提供静态内容。我了解您认为此解决方案对您来说是不可接受的,但必须说。

    如果这不能涵盖您的问题,请随时阐述,我将进一步迭代。

    编辑 1

    别客气。NAT 不会影响 https 的正常运行,它可以正常工作。

    我无法想象你为什么会担心其他非特权用户绑定到 8080。你的情况有什么独特之处吗?

    • 4
  2. Shachar Shemesh
    2014-09-27T20:39:16+08:002014-09-27T20:39:16+08:00

    您的 privbind 问题可能是 HOME 设置为 root 的结果。无论是我还是任何将从我那里获得 privbind 所有权的人都将尝试在下一个版本中修复它(现在会有下一个版本......)

    看看在命令行开头添加“HOME=~glassfish”(假设 bourne 派生的 shell)是否可以解决问题(如果它仍然相关:自从提出这个问题已经四年了,毕竟......)

    沙查尔

    • 0

相关问题

  • JBOSS 应用服务器与 Glassfish

  • GlassFish 更改 Web 服务的端口

  • GlassFish 服务在控制台注销时停止

  • Glassfish 和 OCSP

  • 阿帕奇的替代品

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve