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 / 问题 / 790117
Accepted
blur0224
blur0224
Asked: 2016-07-16 11:49:32 +0800 CST2016-07-16 11:49:32 +0800 CST 2016-07-16 11:49:32 +0800 CST

Nexus Repository OSS 反向代理

  • 772

我有一个运行 Nexus Repository OSS 的 Windows Server 2012-R2 服务器localhost:8081。我在 IIS 中使用以下规则配置了反向代理:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="http://localhost:8081/{R:1}" />
                </rule>
            </rules>
            <outboundRules>
                <preConditions>
                    <preCondition name="ResponseIsHtml1">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                    </preCondition>
                </preConditions>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

当我从另一个系统访问该站点并导航到 nexus.mycompany.com 时,我可以看到代理正在工作……主要是。所有依赖的css、js等都是localhost:8081远程机器无法解析的。

我尝试添加出站规则,希望它能解决问题,但没有。

 <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
                        <match filterByTags="A, Form, Img" pattern="^http(s)?://localhost:8081/(.*)" />
                        <action type="Rewrite" value="http{R:1}://nexus.mycompany.com/{R:2}" />
 </rule>

查看文档,我尝试设置一个基本 URL。它描述的按钮不在 GUI 中。我发现一篇 Stack Overflow 文章解释说它已被移至 Capabilities 部分。我通过功能添加了基本网址,但它仍然不起作用。

每次更改后我都重新启动了 Windows 服务。

我想做的是通过主机名使用存储库并适当地加载它。我在这里遗漏了一些明显的东西吗?它使用完整 URL 而不是相对 URL 是否还有其他原因?

windows-server-2012-r2 nexus iis-8
  • 1 1 个回答
  • 1605 Views

1 个回答

  • Voted
  1. Best Answer
    Mike Paxton
    2016-08-30T23:07:09+08:002016-08-30T23:07:09+08:00

    在反向代理设置中,Nexus 查找各种X-Forwarded-*HTTP 标头的存在以确定其基本 URL。只要您正确设置这些标头,它就应该生成正确的 URL,不需要出站规则。

    诀窍是知道要传递哪些——反向代理文档似乎并没有特别清楚地说明这些是什么,它们只是提供了 nginx 和 Apache 示例而没有太多解释。我怀疑 nginx 和 Apache 会自动设置必要的标头,而 Nexus 已经采用了这些标头。这完全是一个“事实上的标准”,而不是一个正式的标准,因此虽然您看到跨应用程序支持标头的相当多的一致性,但并不能保证。

    这些是我需要的两个:

    • X-Forwarded-Host告诉 Nexus 客户端请求的原始主机。在您的示例中,这将是“nexus.mycompany.com”。
    • X-Forwarded-Proto可以用来告诉 Nexus 原始请求(即到您的代理)是 HTTPS,即使 Nexus 本身没有运行 HTTPS。如果您的代理不是 HTTPS,那么您不需要它。

    标头在服务器变量部分设置——用下划线替换破折号并在前面打一个“HTTP_”,所以X-Forwarded-Host变成HTTP_X_Forwarded_Host.

    所以规则最终看起来像这样:

    <rule name="ReverseProxyInboundRule1" stopProcessing="true">
        <match url="(.*)" />
        <action type="Rewrite" url="http://localhost:8081/{R:1}" />
        <serverVariables>
            <set name="HTTP_X_Forwarded_Proto" value="https" />
            <set name="HTTP_X_Forwarded_Host" value="nexus.mycompany.com" />
        </serverVariables>
    </rule>
    

    同样,如果您的反向代理不是 HTTPS,请取出 Proto。

    设置了这些标头后,您将不需要出站规则,正如您所指出的,它无法捕获 Javascript 文件中发生的大量内容。

    最后,您可能需要考虑将基本 URL 功能保留在那里——根据文档,它确实用于一些事情。

    • 3

相关问题

  • IIS 8.5 不接受应用级别的身份验证设置

  • RRAS NAT 不转发特定 Hyper-V 虚拟机

  • Server 2012 重复数据删除:在 Hyper-V 主机或来宾 VM 上运行?

Sidebar

Stats

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

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

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +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