Nginx是一个相对较新的开源Web服务器,近年来引起了一些兴趣,在过去的几年中,在一些基准testing中performance非常出色。 在为公众可访问的业务应用程序select服务器软件时,我一直在想,从安全angular度来看,使用可能缺乏普遍性的服务器软件(如Nginx)是否是不负责任的。 另一方面,阿帕奇公司经过多年的公众审查,已经修复了许多漏洞,还有一个安全团队。 这里是我对两个候选服务器的优势的看法,这些服务器在市场份额,社区和一般的开发环境上有很大的不同。 Nginx的优点 无处不在。 在我看来,不是一个太简单的目标和一个小的玩家的组合已经帮助一些软件产品变得不太可能成为有针对性的攻击的受害者。 苹果的Mac OS X平台就是一个很好的例子。 Netcraft服务器2009年6月的市场份额数据显示,compytitor分别在Nginx和Apache的市场份额分别为4%和50%。 代码量越小,错误越less。 这只是一个假设; 我没有查看过任何一个代码库,但是假设代码类似于错误率,代码量越小代码越less。 据Ohloh介绍,Codebase的大小是635:75,较大的是Apache。 我不确定这是否包含模块,但考虑到巨大的三angular洲,它可能会。 (这当然会导致一个非常不正确的结论,因为如果安全是你的焦点,那么你将只能运行你需要的模块。) Apache的优势 安全团队。 Apache软件基金会似乎拥有相当先进的安全基础设施。 经验。 Apache HTTP Server项目多年来已经看到了许多漏洞,毫无疑问,他们已经制定了如何更好地处理问题的策略。 无处不在。 这可以很容易地成为一个专家,因为它可能是一个骗局。 这意味着更多的眼睛在代码,但它没有说眼睛坏眼比。 到期。 正如我前面提到的,这个项目经历了无数次的探索和大量的公众监督。 这可能会导致零日漏洞的风险略低,因为漏洞问题可能不太可能被漏掉。 也可能意味着新的攻击将不太重要。 快速search没有揭示Apache是否进行了安全审计。 文档。 攻击向量可以通过configuration错误来创build。 这似乎不太可能与Apache,因为它提供了大量的如何保护服务器的出版物(书籍和文章)。 安全模块的数量。 从浏览这两个服务器的网站,我感觉到Apache在安全性增强模块中大大超过了Nginx。 无处不在似乎是一把双刃剑。 无论普遍存在好坏,可能不是线性关系(可能还包括其他因素,比如是否非常容易被利用)。 我非常怀疑有关无处不在的安全漏洞的影响的研究,虽然我承认尝试search。 如果我们正在谈论一个社交应用程序,一个新闻网站或在与业务应用程序分离的服务器上服务的媒体,我可能不会对此感到疑惑。 对于处理付款,个人信息和信用卡号码的应用程序,我目前的信息是倾向于Apache。 由于我不是一名安全专家,我的思想并没有科学地收集,因此可能不会太定论,因此,我很感激任何关于什么因素会影响这样的决定的意见。 如果没有别的,这仍然是在同一个位置的其他人的考虑。
我有一个子域,在那里我想保持我正在从事的项目,以便向客户展示这些项目。 这里是/ etc / nginx / sites-available / projects中的configuration文件: server { listen 80; server_name projects.example.com; access_log /var/log/nginx/projects.example.com.access.log; error_log /var/log/nginx/projects.example.com.error.log; location / { root /var/www/projects; index index.html index.htm index.php; } location /example2.com { root /var/www/projects; auth_basic "Stealth mode"; auth_basic_user_file /var/www/projects/example2.com/htpasswd; } location /example3.com/ { index index.php; if (-f $request_filename) { break; } if (!-f $request_filename) { […]
我在Ubuntu Hardy上安装了nginx,并立即意识到PHP脚本获得了空的请求数组,即无论GET或POST什么都没有通过,甚至$ _REQUEST数组也是空的。 当我切换回Apache,这一切都很好。 安装nginx的版本是0.6.35-0ubuntu1.1〜hardy1,PHP是PHP 5.2.4-2ubuntu5.10。 什么可能是错的?
当第一次访问我的网站后没有访问它几分钟,连接100%的时间“重置”。 打开debugging时出现此消息以及400错误的请求状态消息: client prematurely closed connection while reading client request line 我读过这可能是由large_client_header_buffers设置造成的。 我在我的网站上有谷歌分析。 使用实时http头,我得到这个请求: “GET /__utm.gif?utmwv = 5.3.7&utm.ms = %20General&utmhid = 2004697163&utmr = 0&UTMP =%2Fservices%2Fforums%2Fboard.ws%3F3 2C4%&utmac = UA-25674897-2&utmcc = __ UTMA%3D68455186.1647889527.1351640625.1352446442.1352451659.100%3B%2B__utmz%3D68455186.1352097329.64.2.utmcsr%3Ddomain。 com%7Cutmccn%3D(转介)%7Cutmcmd%3Dreferral%7Cutmcct%3D%2Fservices%2Fforums%2Fboard.ws%3B&utmu = q〜HTTP / 1.1` 我的nginx中的large_client_header_buffers被设置为4 8k ,所以我不知道这是否是问题。 立即请求有第一个“重置”请求都成功。
我在同一主机上运行多个Ruby应用程序: ~/app1 ~/app2 ~/app3 我想要让nginx代理这些应用程序使用子目录,如: http://example.com/app1 http://example.com/app2 http://example.com/app3 我很好奇,如果nginx支持我可以在多个文件中定义这些位置,那么我可以保留每个configuration与应用程序,而不是有一个单一的configuration文件的所有应用程序: ~/app1/nginx.conf ~/app2/nginx.conf ~/app3/nginx.conf 我在3个configuration文件的每个configuration文件中定义一个单独的位置指令的服务器的天真尝试导致conflicting server name "example.com" on [::]:80, ignoredconfiguration,如下所示: upstream app1 { server 127.0.0.1:4567; } server { listen [::]:80; listen 80; servername example.com location /app1 { proxy_pass http://app1; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $remote_addr; […]
nginx location块可以匹配URL查询string吗? 例如,什么位置块可能匹配HTTP GET请求 GET /git/sample-repository/info/refs?service=git-receive-pack HTTP/1.1
我刚刚创build了一个Ubuntu服务器。 我试图安装Nginx,但我得到了错误。 root@scw-eefca0:~# sudo apt-get install nginx Reading package lists… Done Building dependency tree Reading state information… Done nginx is already the newest version (1.10.0-0ubuntu0.16.04.4). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 2 not fully installed or removed. After this operation, 0 B of additional disk space will be used. […]
我目前有nginx设置通过光油来提供内容。 Nginx监听端口8000,清漆将用户的请求从80连接到8000。 问题是,在某些情况下,特别是当试图访问一个目录时,比如site.com/2010会将请求redirect到site.com:8000/2010/ 。 我怎样才能防止这个?
我在本地机器上的Ubuntu 12.04上安装了nginx 1.1.19,除了更改用户指令外,还保留了默认的/etc/nginx/nginx.conf 。 /etc/nginx/nginx.conf user nginx www-data; worker_processes 4; pid /var/run/nginx.pid; … 我想用我的用户目录中的web根目录做一个简单的静态网站工作(假设我的用户名是'ubuntu')。 这是我的testing网站的configuration。 在/ etc / nginx的/网站可用/testing现场 server { #listen 80; ## listen for ipv4; this line is default and implied #listen [::]:80 default ipv6only=on; ## listen for ipv6 root /home; index index.html index.htm; # Make site accessible from http://localhost/ server_name localhost; location […]
HAProxy有一个非常好的状态页面,显示哪些Web服务器已启动,哪些在后端停机。 我试图debugging一些问题,需要知道哪些服务器nginx认为是起来,哪些是它认为是closures的。 有没有一个网页,或者你可以configurationnginx的东西,所以当我需要这种types的信息时,我可以打一个url? 谢谢,Dean