让 Wildfly 监听端口 443 而不是 8443

2024-02-14

所以我添加了一个SSL给我的证书wildfly 9它正在工作,但我想配置我的standalone.xmlhttps on port 443 not on port 8443作为默认配置,所以当我更新值时${jboss.https.port:8443} to ${jboss.https.port:443}它会产生错误。 这就是我的standalone.xml :

<server name="default-server">
            <http-listener name="default" socket-binding="http" redirect-socket="https"/>
            <https-listener name="httpsServer" socket-binding="https" security-realm="ApplicationRealm"/>
            <host name="default-host" alias="localhost">
                <location name="/" handler="welcome-content"/>
                <location name="/images" handler="ImagesDirHandler"/>
                <filter-ref name="server-header"/>
                <filter-ref name="x-powered-by-header"/>
            </host>
</server>

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
    <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
    <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
    <socket-binding name="http" port="${jboss.http.port:8080}"/>
    <socket-binding name="https" port="${jboss.https.port:8443}"/>
    <socket-binding name="txn-recovery-environment" port="4712"/>
    <socket-binding name="txn-status-manager" port="4713"/>
    <outbound-socket-binding name="mail-smtp">
        <remote-destination host="localhost" port="25"/>
    </outbound-socket-binding>
</socket-binding-group>

请提供有关您的环境和错误的更准确的详细信息。

我和你有类似的需求。用户通过网络访问我们的系统,唯一可用的请求位于端口 80 或 443。然后,当客户在端口 80 上调用系统时,wildfly 会重定向到端口 8443,并且用户无法连接到系统。解决方案是将 Wildfly 重定向到端口 443 而不是 8443。请按照以下说明为所有在此问题中寻求帮助的人提供帮助:

  1. 对于基于 Linux 的操作系统,端口最多为 1024 仅可与 root 权限绑定。
  2. 在面向生产的服务器中运行 Wildfly 或任何其他具有 root 权限的 Web/应用程序服务器并不是一个好主意。
  3. 另一方面,尝试使用直接绑定到端口 443 或 80 的“常规”用户运行 Wildfly 会生成类似权限被拒绝的错误。

解决上述问题的方法是将wildfly绑定到端口8080/8443(无需root权限),并要求操作系统将流量从端口80重定向到端口8080,将端口443重定向到端口8443。之后,配置wildfly进行重定向http 请求到端口 443 上的 https 请求,而不是 8443。

因此,假设 Wildfly 在基于 Linux 的操作系统中使用端口 8080 上的 http 和端口 8443 上的 https 作为服务:

1)阻止野蝇:sudo service wildfly stop

2) 在启动 /etc/init.d/wildfly 脚本中添加 iptables 命令,例如:

if [ $launched -eq 0 ]; then
        log_warning_msg "$DESC hasn't started within the timeout allowed"
        log_warning_msg "please review file \"$JBOSS_CONSOLE_LOG\" to see the status of the service"
    else 
        iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
        iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8443

    fi

PS:您可以在 iptables 手册页中的名为“nat”的表上添加一条规则:

nat:

当遇到创建新连接的数据包时,将查阅该表。

所以,如果你有要求https://本地主机:443 https://localhost:443在规则创建之前,连接wal已经创建,所以不应用nat表。从新设备尝试。

Where $launched是一个bash变量来表示wildfly的状态

2) 在standalone.xml中,创建一个附加的套接字绑定条目:

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
    <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
    <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
    <socket-binding name="http" port="${jboss.http.port:8080}"/>
    <socket-binding name="https" port="${jboss.https.port:8443}"/>
    <socket-binding name="https-external" port="443"/>
    <socket-binding name="txn-recovery-environment" port="4712"/>
    <socket-binding name="txn-status-manager" port="4713"/>
   ...

</socket-binding-group>

注意新标签条目<socket-binding name="https-external" port="443"/>

3) 更改 http-listener 以重定向到 https-external 而不是 https:

<http-listener name="default" socket-binding="http" redirect-socket="https-external" max-header-size=...

更改的地方是redirect-socket=”https-外部"

4)重启wildfly:sudo service wildfly start

Wildfly 启动后,验证 console.log 文件以查看任何错误报告。

因此,如果您的 web.xml 部分确保机密传输:

....
<security-constraint>
    ...
    <user-data-constraint>
      <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
  </security-constraint>
...

Wildfly 会将端口 80 或 8080 上的请求重定向到直接端口 443,而不是 8443。

Obs:在对 /etc/init.d/wildfly 脚本和standalone.xml 文件配置进行任何更改之前,最好对其进行备份。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

让 Wildfly 监听端口 443 而不是 8443 的相关文章

随机推荐

  • Heroku CLI 在 Ubuntu 16.04 上无响应

    我正在尝试在 Ubuntu 16 04 上安装 heroku cli 遵循此处的文档 Heroku CLI 文档 https devcenter heroku com articles heroku cli download and ins
  • 更改 NSLayoutConstraint 常量在layoutSubviews中不起作用

    当视图动画为横向模式时 我试图更改 UIButton 的宽度 但是该方法被调用是因为我在那里设置了断点 但按钮的宽度没有改变 我将 IBOutlet 约束添加到按钮的宽度 名为 globalButtonWidthConstraint 我当前
  • 如何使该链接在 JQuery UI 自动完成中可单击?未捕获的类型错误

    我正在尝试使用 Jquery UI 自动完成插件 并且我想在建议框中呈现一些 html 并带有可点击的链接 html 似乎呈现正常 但是当我单击链接时 它们不起作用 并且我进入了我的开发人员日志 jquery ui min js 239Un
  • 子例程是否应该始终显式返回?

    If perlcritic http www perlcritic org 说 子项中没有返回值是错误的 如果确实不需要它们 还有什么选择 我养成了两个明显的坏习惯 我显式地将变量分配给 main 命名空间 然后我在 subs 中使用这些变
  • 使用 Swift 组合创建计时器发布器

    我一直在看通过 SwiftUI 的数据流 WWDC 演讲 https developer apple com videos play wwdc2019 226 他们有一张包含示例代码的幻灯片 其中使用连接到 SwiftUI 视图的计时器发布
  • 从 chrome 获取密码

    是否可以在 Chrome 扩展程序中访问保存的密码 我正在查看 API 但没有找到它 我想将所有密码导出到不同的存储中 并且使用扩展似乎是合乎逻辑的方法 但我找不到如何做到这一点 谢谢你的帮助 好的 回答我自己的问题 似乎不可能通过扩展 A
  • 未生成新随机数

    您好 当我运行这段代码并返回错误距离时 不会生成新的随机数 不断生成相同的随机数 从而使我陷入无限循环 有谁知道为什么会发生这种情况 感谢您的关注 private void setRandomVerticies generate 200 t
  • 当前分支未配置为 pull 在配置中未找到 keybranch.master.merge 值

    当我尝试使用 Egit team gt pull 从远程存储库拉取时出现此错误 当前分支未配置为 pull 无值 key 在配置中找到branch master merge 您的本地 master 分支未设置为跟踪远程 master 分支
  • 一对多连接并检索单个结果

    我有两个表 在 PostgreSQL 中 如果重要的话 具有一对多关系 我需要加入它们 以便对于每个 一 我只能从 多 表中获得单个结果 不仅如此 我还需要从 许多 表中挑选出具体的结果 TABLE A ID NAME DATE MORE
  • Android 和 Arduino 都通过蓝牙接收奇怪的值

    我正在 Android 端使用 BluetoothChat 代码使用聊天框向 Arduino UNO 发送开 关信号 我发送 110 119 或下面定义的其他情况 但是当我显示接收到的值时 它显示奇怪的Arduino 串行监视器中的值 即
  • 从Word文档中获取标题

    如何使用VBA获取Word文档中所有标题的列表 你的意思是这样创建大纲 http msdn microsoft com en us library bb960898 aspx函数 实际上将源 Word 文档中的所有标题复制到新的 Word
  • Python pandas 数据框中的每个数字四舍五入 2 位小数

    这有效p table apply pd Series round 但是它没有小数位 文件说 http pandas pydata org pandas docs stable generated pandas Series round ht
  • 如何在 PyQT 小部件中嵌入 Python 解释器

    我希望能够从我的 python 应用程序中调出交互式 python 终端 我的程序中的一些 但不是全部 变量需要暴露给解释器 目前我使用子类和修改后的QPlainTextEdit并将所有 命令 路由到eval or exec 并跟踪字典中的
  • Python 3.5 urllib.request 403 禁止错误

    import urllib request import urllib from bs4 import BeautifulSoup url https www brightscope com ratings page urllib requ
  • Android Studio 不再启动:初始化“[...].FrameworkDetectionIndex”时发生致命错误

    Android Studio 不再启动 上周五一切都很好 我尝试重新安装 AS 并重新启动 我使用的是 Mac OS X Yosemite 这是错误消息 内部错误 请报告至https code google com p android is
  • MySQL中每个派生表必须有自己的别名错误

    我有以下查询 SELECT SUM cost FROM SELECT s cost FROM sandwiches AS s WHERE s name Cheese Steak UNION SELECT p cost FROM pizza
  • 如何使带有cache_path的caches_action过期?

    我正在使用以下内容缓存索引操作 caches action index cache path gt Proc new c c params expire action action gt index expire action 似乎只使索引
  • ADO.NET 实体框架或 ADO.NET

    我正在开始一个新项目ASP NET 和 Windows 服务器 该应用程序预计会非常大并且服务大量客户 高频次拉取和更新 改变数据 我之前创建过项目Linq To Sql 或使用 Ado Net 我对该项目的计划是使用VS2010和新的EF
  • 在 Laravel 8 中使用 Tailwind 安装 Font Awesome

    我尝试使用 Inertia 将 Font Awesome 添加到新安装的 Laravel 8 Jetstream 但收到以下错误 PostCSS 插件出现未知错误 您当前的 PostCSS 版本是 8 2 4 但 postcss impor
  • 让 Wildfly 监听端口 443 而不是 8443

    所以我添加了一个SSL给我的证书wildfly 9它正在工作 但我想配置我的standalone xml听https on port 443 not on port 8443作为默认配置 所以当我更新值时 jboss https port