标签: web-applications

使用 Nginx 反向代理应用程序及其静态文件

我正在尝试做一些在我看来很简单的事情,但我一定是愚蠢的或错过了一些非常明显的事情,因为我无法弄清楚。

我想访问在我的服务器上运行的多个 Web 应用程序,每个应用程序都有一个唯一的前缀:

http://mywebserver/app1 -> localhost:9001
http://mywebserver/app2 -> localhost:9002
...
Run Code Online (Sandbox Code Playgroud)

据我了解,我需要将 Nginx 配置为反向代理,所以我这样做了:

server {
listen 80;
server_name mywebserver;

  location /app1{
    proxy_set_header    Host $host;
    proxy_set_header    X-Real-IP $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto $scheme;
    proxy_pass          http://127.0.0.1:9001/;
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

此配置允许我访问应用程序的主页http://mywebserver/app1,但未加载静态内容。

当我打开我的浏览器的控制台上,我可以看到它正试图从获得的资源http://mywebserver/static/custom/index.js,而不是像http://mywebserver/app1/static/custom/index.js

我尝试root在 location 块中添加一个指令来为静态提供服务,但由于静态内容请求是 on/而不是 on ,因此未将其考虑在内/app1

如何解决这个问题?有什么明显的我遗漏了还是我完全误解了反向代理的概念?

谢谢你。

nginx web-applications reverse-proxy static-content static-files

11
推荐指数
1
解决办法
2万
查看次数

什么是安全且用户友好的方式来仅向少数用户提供对 Amazon EC2 上的 Web 应用程序的访问?

情况

我们有一个托管在 Amazon EC2 上的 Web 应用程序。它仅供公司中的少数用户使用。

我们如何处理这个问题

  • 我们与用户共享实例的(弹性)IP 地址。
  • 我们根据需要将每个用户的 IP 地址添加到实例的安全组中。

当我说需要时,我指的是用户抱怨门户网站显示错误页面的电子邮件。他们忘记了将 IP 包含在安全组中这一步骤是必需的(我不怪他们;他们是最终用户)。

为了回答这个问题,我们假设一家公司总共有 5 位用户需要此访问权限。User-1和User-2的IP地址已添加到安全组中。

问题

  1. User-3 直接访问该 IP 地址,但无法访问该 IP 地址,因为该用户的 IP 地址尚未添加到安全组。
  2. 如果 User-1 或 User-2 重新启动互联网,他们的 IP 地址可能会发生变化(ISP 提供的动态 IP),并且新的 IP 地址必须添加到安全组中(并且旧的 IP 地址必须被撤销才能生效)。避免他人访问)。

我正在考虑的其他选择

  1. 仅提供对其办公室 VPN 的访问,并要求所有用户通过它进行连接。
  2. (对于用户来说非常麻烦)要求用户登录AWS管理控制台,进入EC2服务,进入安全组部分并手动添加他们的IP地址(用户已经拥有AWS IAM用户和适当的权限来执行此操作) 。
  3. 创建一个将用户当前 IP 添加到安全组的脚本(使用 AWS CLI / SDK) - 听起来非常危险且不合适,因为我们必须在脚本中包含某人的 API 凭证。

security web-applications amazon-ec2 amazon-web-services security-groups

11
推荐指数
2
解决办法
2150
查看次数

您如何部署 .NET Web 应用程序?(请推荐!)

我们最近将我们的 ASP.NET网站升级为Web 应用程序,我们对部署时突然出现的困难感到震惊。考虑到这是一项多么普遍的任务,我想知道人们使用什么插件/软件来部署快速发展的远程存储项目(即网站)?

除了在Visual Studio 中“发布”然后必须手动 FTP 已更改的文件之外,一定有更好的方法吗?尤其是因为当我们上传我们的 .DLL 时网站会宕机。

有太多繁琐的文件异常,我必须尽可能地自动化该过程,以防止意外上传。

使用我们的旧解决方案(在我们的网站上),我们使用Dispatch for ASP,它完全震撼了整个过程,只需单击一下。不幸的是,它对 DLL 来说不是很好(如前所述)。

那么你的团队是如何做到的呢?

感谢您的任何建议。

PS - 我已经读到 Visual Studio 2010 应该解决 VS2005/08 中的这些缺点,但在那之前......

iis deployment web-server web-applications visual-studio

10
推荐指数
1
解决办法
2752
查看次数

用于管理软件分发的 Web 应用程序

我是一家小型软件开发公司的 IT 人员。我们的软件可供通过我们网站购买许可证的客户下载。我正在尝试找到一种解决方案来更好地管理软件下载过程。对于每个新版本,我们都有针对各种平台和配置的构建(总共大约 50 个不同的可单独下载的组件)。每个客户只能访问这些组件的一小部分。我目前正在使用一些 perl 脚本“管理”所有这些,但它非常粗糙。

我正在考虑一个 Web 应用程序,它允许客户登录并查看他们购买的可下载组件。我不需要任何花哨的东西来处理通过我们的网站或类似的东西购买软件。至少在最初,对单个下载的访问将在每个客户的基础上手动管理。我正在考虑使用Project Drupal 模块,但需要进行一些重大修改才能完成我们需要的工作。有什么更适合这个的吗?

web-applications

9
推荐指数
1
解决办法
1536
查看次数

是什么导致 null ("") 出现 400 Bad Request 错误,为什么我们的 nginx 日志会有这么多?

Logwatch 的每日日志定期报告 400 个错误请求,空值:1744 次来自我们的 nginx 日志。

日志条目如下所示:

123.123.123.123 - - [25/Jan/2011:14:44:19 -0500] "-" 400 173 "-" "-"

谁能解释这些是如何产生的以及为什么有这么多?它似乎没有造成任何伤害,但我们一天内出现了多达 8000 个。我们托管了一个在 unicorn 和 nginx 上运行的中型 Rails 应用程序。

在 nginx 论坛中有一些讨论,但我还没有找到一个真正的解决方案来减少记录的 400 个错误请求的数量。

linux nginx web-server web-applications ruby-on-rails

9
推荐指数
1
解决办法
3048
查看次数

企业内部 URL 约定

这里的开发人员...我想了解您对这个问题的 IT 观点...

我正在为我的公司构建一个新的内部 Web 应用程序,并开始考虑如何部署它。此处的许多现有 Web 应用程序都直接使用它们的服务器名称进行链接,如下所示:

http://webserver123/someInternalApp/
Run Code Online (Sandbox Code Playgroud)

由于各种原因,这让我感到不舒服。服务器名称更改,服务器停机,用户不必知道服务器名称即可找到他们的 Web 应用程序。使用服务器名称可以防止我们交换服务器或添加负载平衡器。如果你能想到其他不好的原因,请告诉我,以便我可以更好地改变这种做法。

展望未来,我希望在我们的内部 DNS 中设置一些更好的域名,这些域名将指向适当的 Web 服务器和应用程序。在我的上一份工作中,我们遵循了这样的约定:

  • 对于生产: http://someInternalApp.myCompany.com/
  • 测试: http://test.someInternalApp.myCompany.com/
  • 开发: http://dev.someInternalApp.myCompany.com/

我喜欢这个更好的,因为应用程序的名称是域名的一个重要组成部分,与开发/测试/生产环境的指定很简单。但是,我有一些保留意见:

  • 将应用程序名称放在子域中最终会创建许多长而独特的子域。我喜欢为每个应用程序设置不同的域,但我也觉得这会变得难以管理。
  • 除了应用程序名称之外,没有什么可以指定此 URL 仅供内部使用。我读过其他组织使用“corp.myCompany.com”或“int.myCompany.com”之类的子域,这可能很好。我不希望用户得到他们可以在家访问这些的印象。

以下是我倾向于使用内部域名的一些选项:

内部子域中的应用程序名称:(它们有点长,但我认为一切都很好地打包在一起)

  • http://someInternalApp.corp.myCompany.com/
  • http://dev.someInternalApp.corp.myCompany.com/

应用程序名称作为子目录:(较短的域名,但它意味着所有应用程序都是一个统一站点的一部分,它们可能不是,并且它断开了应用程序的环境指定)

  • http://corp.myCompany.com/someInternalApp
  • http://dev.corp.myCompany.com/someInternalApp

那么,让我们讨论一下……您对这些选项有何看法?有没有更好或更常见的东西我可能错过了?我有机会让我的公司在这方面走上更好的道路,所以我想找到一个好的约定来推荐。

谢谢!

domain-name-system url web-applications internal-dns

8
推荐指数
1
解决办法
2163
查看次数

Tomcat 9 - catalina.out 日志文件丢失且控制台打印输出未显示在任何地方

Tomcat9 部署在 Ubuntu 18.04 上。此问题仅适用于 Tomcat 版本 9。有一个 catalina。日期.log 文件存在于日志文件夹中,但它不显示来自我们的 Web 应用程序的任何控制台打印输出。

我已经在 logging.properties 中将 ConsoleHandler 级别设置为 ALL,但仍然没有日志。

任何指针,想法?谢谢!

logging web-applications tomcat9

8
推荐指数
1
解决办法
1万
查看次数

Nginx : 在 HTTP 上剥离标头,在 HTTPS 上添加标头

我正在配置 Nginx 服务器,以便作为反向代理为 Django 应用程序(在 Gunicorn 上运行)提供服务。

我的问题是我希望我的网站使用 HTTPS 进行保护,因此我希望我的 Django 应用程序能够确定连接是否安全。我使用的是 Django 1.4,所以我可以访问SECURE_PROXY_SSL_HEADER我配置为SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https').

现在,正如文档中提到的,我需要确保 Nginx 仅在需要时添加标头,而在不需要时将其剥离。因为我希望我的 Nginx 配置尽可能 DRY,所以我不想有两个配置文件(一个用于端口 80,一个用于端口 443)。

因此,我想知道 Nginx 中是否有一种方法可以确定连接是否为 https,并相应地添加(或剥离)标头。

ssl nginx proxy web-applications http-headers

7
推荐指数
1
解决办法
9993
查看次数

在Apache中如何定义多个ProxyPass到具有相同上下文根的不同服务器?

** 更新了此答案底部的解决方法 **

我需要让我的 webapp 代理到 2 个外部报告服务器。所以我将为每个外部报告服务器提供一个菜单项。

但是浏览器 URL 看起来也像是我的服务器,所以我不能只是重定向。这些服务器都具有相同的上下文根 /ibm

对于这两个服务器,浏览器 URL 应该类似于http://example.com/ibm .. 而 apache 代理到正确的。

应该如何进行这样的设置?Apache 如何知道它必须代理哪一个?

如果我必须做一些更改,我不会我的,所以 URL 会变成这样:

http://example.com/rep1/ibm and http://example.com/rep2/ibm
Run Code Online (Sandbox Code Playgroud)

我设法使用我的 weblogic-proxy servlet 和操作 URL 等获得了预期的效果,但如果这可以以某种方式完成,Apache 将是一个更有效的解决方案。

我感谢任何输入。

此外,对外部报告服务器的初始请求是从我的 web 应用程序启动的,而不是从浏览器启动。

** 更新 **

我们现在必须代理到大约 10 个其他网络服务器,其中一些有这个问题。但是每当目标网络服务器部署在根目录中时,我们还必须重写主体等。对于这些代理集成中的一些来说,这需要大量的反复试验。

解决方法:我们已经为这些代理的网络服务器切换到子域,实际上子域 URL 仍然指向我们自己的 apache,但是使用这些子域名称我们可以更轻松地在我们的 Apache 配置中设置虚拟主机和代理,并且我们不必重写任何响应主体等。

web-applications mod-proxy proxypass apache-2.4

7
推荐指数
1
解决办法
3万
查看次数

Web 应用程序部署:适用于所有客户的一个版本或每个客户自己的版本

我有一个关于软件部署的一般问题。在工作中,我们设计了一个通过 Web 浏览器使用的 CRM。最近有人告诉我,每个特定的客户都有自己的服务器(虽然服务器归我公司所有,但它们不是他们的,也不位于他们的办公室)。

这让我有点困扰。在我看来,在设计 Web 应用程序时,他必须牢记他将能够为其所有客户端维护一个“软”运行(不谈论复制或负载平衡),可能有不同的数据库用于每个,但一个应用程序......它特别有助于维护和保持每个人都与补丁和升级保持同步。我错了吗 ??能否通过资源帮助我更好地理解这个问题(我必须缺少正确的关键字才能自己找到它们)。我实际上不明白他们为什么要经历“每个人都使用一个集中式 Web 应用程序”和“每个人使用一个分布式桌面应用程序”之间的“第三种方式”。

谢谢 !

deployment web-applications

7
推荐指数
1
解决办法
1572
查看次数