Articles of networking

Nginx位置的最有效的正则expression式

什么是最有效的方式来定义一个匹配类似的位置指令 location = /[0-9a-zA-Z_-]{1,6} { content_by_lua_file ….} 换句话说,一个URI匹配1到6个字符的string,用“ – ”,“_”,数字和字母。 或者在我的LUA代码中检查string长度会更快,这将通过使用位置指令来生成输出 location / {content_by_lua_file…}

我应该总是使用一个Web应用程序的反向代理?

我在Go上写了一个Web应用程序。 目前我有一个看起来像这样的布局: [CloudFlare] – > [Nginx] – > [程序] Nginx做了以下工作: 执行一些redirect(即www.domain.tld – > domain.tld ) 添加诸如X-Frame-Options标题。 处理静态图像。 写入access.log 。 在过去我会使用Nginx,因为它执行SSL终止和一些其他任务。 由于现在由CloudFlare处理,所以它本质上是静态图像。 鉴于Go有一个内置的HTTP FileServer,CloudFlare可以为我处理静态图像,所以我开始怀疑为什么Nginx会在第一位置。 在前面没有任何东西是不好的主意?

nginx和apache web服务器

这个问题不是nginx vs apache。 我更感兴趣的是NGinx在Apache上的架构优势。 正如我所能理解的 – nginx是一个asynchronous的,事件驱动的Web服务器,它的performance远远超过了Apache。 为什么是这样? Apache落后于何处?

Mongrel2与NGINX + ZeroMQ?

我在github上看到了这个新的NGINX + ZeroMQ项目,现在我感到困惑。 Mongrel2和NGINX + ZeroMQ有什么特点和可扩展性的区别? (我之所以问,是因为我觉得Mongrel2是独立创build的,因为NGINX不支持ZeroMQ)

你知道有什么理由使用Apache而不是Nginx吗?

你知道有什么理由使用Apache而不是Nginx吗? 我正在谈论一个没有任何遗留代码或configuration的“新项目”。 更新: 使用Apache的最常见的原因是: 我们有我们的重写configuration 我们有我们的应用程序,在Apache上工作 ..对于传统的应用程序是可以的。 但是,绝对“新应用2013”​​呢? 你怎么看? 顺便说一句,我知道的话题: Nginx和Apache Nginx与Apache或使用Apache与Nginx Nginx v Apache用于高stream量的站点 使用Nginx或Apache来提供dynamic内容? ..我不能find任何专业的Apache在那里。 你能指点我吗?

Nginx获取具体域名的错误

我正在build立一个新的服务器。 我select的http-Server是NGINX。 我想添加域audi-freunde-einbeck.de作为虚拟主机。 我已经有2个其他领域在那里,它工作正常,但是当我尝试添加上述域和启动服务器,它给了我Job failed. See system journal and 'systemctl status' for details. Job failed. See system journal and 'systemctl status' for details. 我以为这是因为破折号,所以我尝试了各种其他领域有和没有连字符,但是,祝你好运。 同样的错误。 这可能是什么原因造成的? 我也尝试重新启动,我真的在这里亏本。 任何帮助将不胜感激。 我已经玩了一下,发现,当我只放一个域名,它的作品。 但是当我把另一个域名,它停止。 以下是状态输出: [root@netzmelone nginx]# systemctl status nginx nginx.service – A high performance web server and a reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled) Active: failed (Result: […]

SYN很频繁地收到RST,ACK

Hi Socket编程专家, 我在Windows上运行SQL Server 2005/2008的Linux上编写代理服务器。 该代理使用bsd套接字编码,并在C中,它工作正常与下面描述的问题。 当我使用数据库客户机(用JAVA编写,并在Linux机器上运行)直接向数据库服务器发出查询(并发数为100或更多)时,不会遇到连接重置。 但通过我的代理,我正在经历许多连接重置。 深入挖掘我知道从“DB客户端”到“代理服务器”的连接总是成功的,但是当“代理服务器”试图连接到数据库服务器时,连接失败,因为SYN数据包获得了RST,ACK。 这是给一些背景。 问题是:为什么有时SYN会收到RST,ACK? DB client(linux) to Server(windows) —-> Works fine DB client(linux) to Proxy(Linux) to Server(windows) —–> problematic 我知道这可能发生在“连接被拒绝”的情况下,但这绝对不是那个。 SYN洪泛可能是另一种情况,但这并不能解释直接向服务器发起攻击时的良好行为。 我怀疑一些套接字选项设置可能是必需的,客户端连接之前,我的代理不。 请把这个点亮一下。 任何帮助(链接或指针)最受赞赏。 附加信息: 写一个并发连接的C客户端,它将并发作为参数。 这里是我的观察: – > 5000并发和以上,一些连接失败,连接被拒绝。 – > 2000年以下,它工作正常。 但是,即使在100个或更多的并发情况下,也会观察到实际的问题。 注意:问题是依赖于时间的,有时它永远不会出现,有时非常频繁,DB客户端(直接到服务器)在任何时候都可以正常工作。

将IPconfiguration从一个接口移到另一个接口

我正在开发testing一个networking应用程序的Python脚本。 作为testing的一部分,需要将networkingconfiguration(IP地址,路由…)从一个接口( 物理接口 )移动到另一个接口( 网桥 ),并且在testing完成后,将系统恢复到原始状态。 什么是在Python中完成这个最优雅的方法? 我曾经想过的一些想法: testing期间不要从物理接口取消分配IP地址,这样路由不会丢失。 但是这意味着在testing过程中,同一个IP地址将会在网桥上共存。 这会在某些特定的Linux内核上出现问题吗? 虽然,它似乎在我的系统上工作得很好… 分配IP地址以从物理接口 桥接和取消分配。 易于在Python中实现,因为这需要做简单的ifconfig调用和parsing。 但是,如果默认路由是通过物理接口 ,那么当我从物理接口取消分配IP地址时,它将同时消失。 parsingip route ls输出并将路由与IPconfiguration一起移动。 这似乎是唯一合理的方法,但需要相当多的编码。 也许有更优雅的东西? 像iptables-save eth0>eth0_conf , iptables-restore eth0_conf ? 还有其他build议吗? 这个testing工具必须是可移植的,并且能够运行在不同的Linux内核上。

在Linux上获取组播源IP地址

我使用struct sockaddr_in来接收从另一台机器发出的组播数据。 当我使用inet_ntop打印出源地址时,它给了我发送数据的PC的源地址。 我想知道是否有办法获得数据被发送到的多播地址?

如何使用TOS设置消息优先级?

IP标头具有服务types(TOS)字段。 它可以用来设置有类别的排队规则,即PRIO。 我testing了以下代码。 #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> #include <unistd.h> int main(int argc, char**argv) { int listenfd, connfd, optval; struct sockaddr_in servaddr, cliaddr; socklen_t clilen; pid_t childpid; char mesg[16]; listenfd = socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); bzero(mesg, 0, sizeof(mesg)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr=htonl(INADDR_ANY); servaddr.sin_port = htons(32000); bind(listenfd,(struct sockaddr *)&servaddr, sizeof(servaddr)); listen(listenfd, 1024); for (;;) […]