假设配置了多个处理程序映射来处理一个请求,在 IIS 中,确定使用哪个处理程序映射来提供响应的算法是什么?
我开发了一个简单的 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,这个代理在哪台机器上运行?
我应该选择哪一个?我误解了什么吗?文章,答案表示赞赏。
我的应用程序上的一些 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。
所以一无所知,感谢您的帮助。
我正在尝试将 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?
使用时是否需要特殊的东西来匹配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) 我安装了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 和所有内容),但仍然没有可见的应用程序更改。
操作系统:Ubuntu 16.04
\nNginx:1.12.1
\nPuma:3.11.0
\nRuby:2.5.0
/path/to/app/Gemfile(摘录)
\n\ngem \'puma\', "~> 3.10"\nRun 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) 我得到了我的本地 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) https://en.wikipedia.org/wiki/Virtual_hosting 说
基于名称的虚拟主机对同一个 IP 地址使用多个主机名。
“主机名”是对应一个IP地址还是一对IP地址和一个端口?
指定“主机名”时,还需要指定端口吗?
如果这很重要,请仅在虚拟主机中考虑。
谢谢。
像这样在相同的情况下定义两者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) 我需要提供一个处理大量请求的 PHP 应用程序。我想知道使用 Apache 以外的任何东西是否有任何真正的好处,以及替代方案的优缺点是什么。
我有一些在 Rails 应用程序中使用 lighttpd 和 nginx 的经验。它们也是 PHP 的有力竞争者吗?有什么重要的设置技巧吗?
PHP 加速器怎么样,它们可以与这些替代服务器一起使用,是个好主意吗?
我在 OpenSolaris 机器上。
不确定是否相关,但是,稍后,我计划在此服务器前面放置一个 Varnish 代理/缓存。
我想补充一点,我绝对无意接触该应用程序。这是 PHP 出名的典型混乱,而且基本上没有时间。
web-server ×10
nginx ×4
php ×2
apache-2.4 ×1
botnet ×1
cluster ×1
dyndns ×1
haproxy ×1
hostname ×1
httpd ×1
httpd.conf ×1
https ×1
iis ×1
init.d ×1
performance ×1
port ×1
ssl ×1
tomcat ×1
ubuntu ×1
virtualhost ×1