标签: web-server

IIS 处理程序映射

假设配置了多个处理程序映射来处理一个请求,在 IIS 中,确定使用哪个处理程序映射来提供响应的算法是什么?

iis configuration web-server handler-mappings

4
推荐指数
1
解决办法
3395
查看次数

在 Tomcat 中水平扩展 Web 应用程序(负载平衡/集群)

我开发了一个简单的 REST 风格的 Web 应用程序,由 2 个基本模块组成。

模块#1:服务器暴露 REST Web 服务,无状态,部署在 Tomcat 中
模块#2:REST 客户端

有一个部署了 Module#1 的 Tomcat 实例。

我想水平扩展它并在第二台机器上运行第二个 Tomcat。在负载平衡/集群方面,我是一个完整的新手,这就是我需要帮助的原因。不需要会话复制和故障转移。

我应该如何处理它?

我做了一项研究,这些是我看到的可能的方法:

1.无集群,无第三方代理。

我在第二台机器上运行第二个 Tomcat。由于我可以控制客户端和服务器,我可以在客户端提供一个非常基本的算法并随机选择一个主机,这将在 API 调用之前选择。不需要配置集群,也不需要提供第三方代理。是否有任何潜在的陷阱?这是正确的方法吗?

2.Tomcat集群

说到Tomcat集群配置,是不是说有2个Tomcat在单独的机器上运行,并且他们的配置说它们是一个集群?我需要一个单独的库,工具吗?Tomcat 就够了吗?我会像第一种方法一样运行 2 个进程吗?

3.Tomcat负载均衡器

Tomcat集群和Tomcat负载均衡器有什么区别?再次,我需要一个单独的库,工具吗?Tomcat 就够了吗?

4. 第三方代理

我找到了一些关于 HAProxy 之类的信息。这是否意味着,所有调用都经过它,代理决定选择哪个主机?这是否意味着除了两个Tomcat进程之外还会有第三个单独运行?假设我在两台不同的机器上有 2 个 Tomcat,这个代理在哪台机器上运行?

我应该选择哪一个?我误解了什么吗?文章,答案表示赞赏。

cluster tomcat web-server load-balancing haproxy

4
推荐指数
1
解决办法
7689
查看次数

如何拒绝 POST 到 nginx 中的 url

我的应用程序上的一些 SQL-heavy URL(例如/members)正在受到僵尸网络的攻击。所以我想禁止任何人发布到这些 URL,同时允许其他人获取它们。

我试着做一个这样的嵌套循环:

if ($request_uri ~ .*members^)  {

   if ($request_method = POST ) {
         return 444;
     }
}
Run Code Online (Sandbox Code Playgroud)

但是 nginx 不接受这一点。

我也试过这个指令

location ~ "^/members$" {
    if ($request_method ~ ^(POST)$ ) {       
        return 444;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是这个也否认GET。

所以一无所知,感谢您的帮助。

nginx web-server botnet

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

Apache 使用错误版本的 PHP

我正在尝试将 PHP 从 5.5 降级到 5.3(不是自愿的)。

我以为我通过输入以下内容卸载了 php 5.5sudo apt-get remove "php*"

然后我按照这些说明安装了 php 5.3

然而,当我phpinfo()在脚本内部调用并运行它时,我仍然得到 PHP Version 5.5.9-1ubuntu4.19

但是当我php -v从命令行调用时我得到PHP 5.3.29 (cli) (built: Sep 2 2016 10:56:16)

当我 cd 到根目录并键入时,locate libphp5.so只找到 1 个路径,而这就是 Apache 已在使用的路径。

我如何告诉 Apache 使用 5.3?

ubuntu php web-server apache-2.4

4
推荐指数
1
解决办法
6273
查看次数

nginx 映射指令不适用于子网掩码

使用时是否需要特殊的东西来匹配nginx中的子网map?我在块中有以下配置http {}。客户端IP为10.0.3.1。如果我删除该10.0.3.1条目,它总是返回拒绝而不是匹配 10.0.3.0/24 子网。是否有我缺少的 nginx 模块或其他模块?

我将此配置基于一些博客文章,但找不到任何官方文档来说明支持此表示法。

map $remote_addr $allowed {
     10.0.3.1 allow;
     10.0.2.0/24 allow;
     10.0.3.0/24 allow;
     default deny;
}
Run Code Online (Sandbox Code Playgroud)

nginx web-server

4
推荐指数
1
解决办法
5631
查看次数

使用 init.d 重新启动 Puma

我安装了Puma,并作为生产 Rails 站点的 Web 服务器运行,使用 Nginx 作为反向代理。

\n\n

我想使用init.d来管理 Nginx 和 Puma 的服务。在我看来,我已经设置了执行此操作的设置,但是在应用程序更改后重新启动 Puma 时,旧的更改仍然有效。

\n\n

热启动和冷启动 Puma 来服务新的应用程序更改的正确做法是什么?

\n\n

我能弄清楚真正应用新更改的唯一方法是重新启动服务器。

\n\n

显然,这是不对的,有一个命令 where ,但是当我运行 时sudo /etc/init.d/puma restart,它看起来像是重新启动(使用新的 PID 和所有内容),但仍然没有可见的应用程序更改。

\n\n

操作系统:Ubuntu 16.04
\nNginx:1.12.1
\nPuma:3.11.0
\nRuby:2.5.0

\n\n

导轨配置

\n\n

/path/to/app/Gemfile(摘录)

\n\n
gem \'puma\', "~> 3.10"\n
Run Code Online (Sandbox Code Playgroud)\n\n

/path/to/app/config/puma.rb

\n\n
# Change to match your CPU core count\nworkers Integer(ENV[\'WEB_CONCURRENCY\'] || 2)\n\n# Min and Max threads per worker\nthreads_count = Integer(ENV[\'RAILS_MAX_THREADS\'] || 5)\nthreads threads_count, threads_count\n\napp_dir = …
Run Code Online (Sandbox Code Playgroud)

web-server init.d

4
推荐指数
1
解决办法
6012
查看次数

为什么 nginx default_server 屏蔽更好的匹配?

我得到了我的本地 nginx 服务 3 个站点,分别具有以下配置。当使用A或A.domain请求时,它们在我的本地 LAN 中运行良好(参见下面的 dnsmasq 配置)。现在,我希望通过像B.domain.ddns.net这样的 dyndns 域从 Internet 上访问这些站点之一。

我将路由器配置为将端口 81(以免意外屏蔽路由器的管理界面)转发到本地服务器的端口 80,并添加了以下示例中当前注释掉的行(default_server 行除外)。

我输入了http://B.domain.ddns.net:81作为 URL。它没有用。

我认为子域可能以某种方式不适用于 dyndns 系统,因此我另外将一个站点设置为default_server.

现在,该站点可从 Internet 访问,但突然其他站点之一在本地不再可用,无论是C还是C.domain,而是提供默认站点。

有人知道为什么会这样吗?或者为什么 dyndns 域首先不匹配?或者如何设置访问日志以向我显示带有域字符串的请求站点?或者,也许是否有更好的方法将一个站点提供给 Internet,而将其他站点提供给本地站点?

站点A

server {
  listen 80;
  listen [::]:80;
  server_name A.domain, A; 
...
Run Code Online (Sandbox Code Playgroud)

站点B

server {
   listen 80;
   # used this instead of previous line after specific domain below didn't work
   # listen 80 default_server;
   listen [::]:80; …
Run Code Online (Sandbox Code Playgroud)

nginx web-server dyndns

4
推荐指数
1
解决办法
780
查看次数

指定“主机名”时,还需要指定端口吗?

https://en.wikipedia.org/wiki/Virtual_hosting 说

基于名称的虚拟主机对同一个 IP 地址使用多个主机名。

“主机名”是对应一个IP地址还是一对IP地址和一个端口?

指定“主机名”时,还需要指定端口吗?

如果这很重要,请仅在虚拟主机中考虑。

谢谢。

web-server port hostname virtualhost

4
推荐指数
2
解决办法
6969
查看次数

在同一个 nginx 服务器下定义两个监听(80 和 443)是否正确?

像这样在相同的情况下定义两者listen(80和 443)是否正确?server {}

另一种方法是server{}为每个端口定义两个单独的端口,我知道这是可以的。

server {

    listen       80 default_server;
    server_name  example.com;
    root         /usr/share/nginx/html;

    location / {

    }


    listen example.com:443 ssl; # <<< !!!

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; 
    include /etc/letsencrypt/options-ssl-nginx.conf; 
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;         
}
Run Code Online (Sandbox Code Playgroud)

ssl nginx https web-server httpd.conf

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

PHP 网络服务器的最快选择

我需要提供一个处理大量请求的 PHP 应用程序。我想知道使用 Apache 以外的任何东西是否有任何真正的好处,以及替代方案的优缺点是什么。

我有一些在 Rails 应用程序中使用 lighttpd 和 nginx 的经验。它们也是 PHP 的有力竞争者吗?有什么重要的设置技巧吗?

PHP 加速器怎么样,它们可以与这些替代服务器一起使用,是个好主意吗?

我在 OpenSolaris 机器上。

不确定是否相关,但是,稍后,我计划在此服务器前面放置一个 Varnish 代理/缓存。

编辑:

我想补充一点,我绝对无意接触该应用程序。这是 PHP 出名的典型混乱,而且基本上没有时间。

php performance httpd web-server

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