Questions tagged «nginx»

Nginx(“ eNgine x”)是一种轻量级的高性能HTTP服务器,反向代理,TCP流代理和邮件代理,在类似BSD的许可证下发布。

1
了解Nginx proxy_cache_path指令
假设我有这个Nginx配置文件 proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=myCache:8m max_size=100m inactive=1h; 什么keys_zone=myCache:8m意思 在文档中并没有说太多: 此外,所有活动密钥和有关数据的信息都存储在共享存储区中,该存储区的名称和大小由keys_zone参数配置。 如果proxy_cache_valid(12h)高于中的指定inactive值(1h)proxy_cache_path怎么办?它将遵循哪个规则?例如 proxy_cache_valid 200 302 12h; proxy_cache_valid 404 302 1h; 谢谢!

1
Nginx配置文件的名称和位置(等同于htaccess)是什么?
关于如何编写Nginx重写规则以模仿Apache的.htaccess文件的教程很多,但我不能自信地说我知道这个所谓的Nginx配置文件的名称或位置实际上是什么。我专门在寻找Nginx配置文件,该文件可让您编写服务器路径和PHP指令。我使用Ubuntu 12 Linux和Codeigniter作为我的PHP框架。 到目前为止,这是我所知道的: 此文件:/etc/nginx/nginx.conf尽管名称很诱人,但显然不是服务器指令的位置。 这个文件:/etc/nginx/sites-available/default似乎是我所需要的(我能够生成特定于我的应用程序的php错误),但是我无法正确获取Codeigniter特定的路径路由。首先,这是每个人都在谈论的“ config”文件/.htaccess吗?

2
HTTP反向代理是否通常在代理连接的客户端而不是服务器端启用HTTP Keep-Alive?
HAProxy能够在客户端(客户端<-> HAProxy)上启用HTTP保持活动,但在服务器端(HAProxy <->服务器)上禁用HTTP保持活动。 我们的一些客户通过卫星连接到我们的Web服务,因此延迟约为600毫秒,我认为通过启用保持活动状态,可以使速度加快一点。我对吗? Nginx支持吗?这是其他软件和硬件负载平衡器中广泛实施的功能吗?HAProxy之外还有什么?

2
Nginx:多个路径的位置正则表达式
我在nginx config中有两个可以工作的位置: location ^~ /media/ { proxy_pass http://backend.example.com; } location ^~ /static/ { proxy_pass http://backend.example.com; } 如何将这两部分合并到一个位置? 我已经做了什么: 我尝试了这个建议 location ~ ^/(static|media)/ { proxy_pass http://backend.example.com; } 但这对我不起作用。 另外,当我不使用后端时,以下配置可以正常运行: location ~ ^/(static|media)/ { root /home/project_root; } 更新(日志中的一些字符串) xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /content/11160/ HTTP/1.1" 200 5310 "-" "Mozilla/5.0 (Windows NT …
30 nginx  regex 

3
使用NGINX代理HTTPS请求到HTTP后端
我已将nginx配置为我的外部可见的Web服务器,该服务器通过HTTP与后端通信。 我要实现的方案是: 客户端向nginx发出HTTP请求,该请求重定向到同一URL,但通过HTTPS Nginx代理通过HTTP请求到后端 nginx通过HTTP从后端接收响应。 Nginx通过HTTPS将其传递回客户端 我当前的配置(正确配置了后端)是: 服务器{ 听80; server_name localhost; 位置〜。* { proxy_pass http:// backend; proxy_redirect http://后端https:// $ host; proxy_set_header主机$ host; } } 我的问题是通过HTTP而非HTTPS发送对客户端的响应(第4步)。有任何想法吗?


2
nginx自动故障转移负载平衡
我正在使用nginx和NginxHttpUpstreamModule进行负载平衡。我的配置非常简单: upstream lb { server 127.0.0.1:8081; server 127.0.0.1:8082; } server { listen 89; server_name localhost; location / { proxy_pass http://lb; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 但是使用此配置时,当2个后端服务器之一关闭时,nginx仍将请求路由到该服务器,这将导致一半时间超时:( 是否有任何解决方案可以使nginx在检测到服务器宕机时自动将请求路由到另一个服务器。 谢谢。

3
阿帕奇vs Nginx
我最近一直在研究Apache和Nginx之间的差异,并且对应该选择哪个感到困惑。 我进行了一些搜索,但两者之间没有确定的比较,我想知道是否有人可以就两者之间的差异发表意见。 我目前的知识使我了解到mod_php比fastcgi更快,更安全,但是Apache在同时连接和内存消耗方面要差得多。 我的网站使用了很多长时间轮询,但是没有基于AJAX的网站(例如,Apache的顶部一直进行长时间轮询)。 我最初对Apache内存问题的解决方案是通过node.js发送长时间的轮询,然后每2秒让node.js访问Apache,在这种情况下,Apache没有打开的连接,而是由node.js进行。我意识到这可能不够好,并且正在寻找不同的解决方案。对于我最初的想法是否可行,我仍然很感兴趣。 那么,哪个对现代网络更好?Apache还是Nginx? 更新:给出的所有建议都是有效的。我已经放弃了最初的第二个想法,那就是使用完整的Nginx服务器。我很满意,作为专用服务器,我不会遭受fastcgi的安全问题,并且由于我的长轮询脚本需要用PHP编写,因此我需要一台能够处理高负载同时连接的服务器,而Apache却无法做到这一点我更改结构后,仍然会占用大量内存。 自从Martin F对我的问题点给出了如此清晰,完整的答案后,我就标记了他的答案,以至于我认为他应得的分数。但是,这三个答案都是有效的,并且一定会考虑将反向代理用于我拥有的其他网站因为我刚刚发现Nginx在代理方面可以做的非常非常有用的事情。 谢谢,

8
Nginx + php-fpm“ 504网关超时”错误,负载几乎为零(在测试服务器上)
经过6小时的调试-我放弃了:| 我们在局域网中有一个nginx + php-fpm + mysql,具有将近100个wordpress(由从事测试wordpres设置的不同设计师/开发人员创建和使用) 我们正在使用nginx,长期以来没有任何问题。 今天,突然之间-nginx开始突然返回“ 504网关超时” ... 我检查了Nginx错误日志中的虚拟主机... 2010/09/06 21:24:24 [error] 12909#0: *349 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 192.168.0.1, server: rahul286.rtcamp.info, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "rahul286.rtcamp.info" 2010/09/06 21:25:11 [error] 12909#0: *349 recv() failed (104: Connection …

8
即使我更新了OpenSSL,我的服务器仍然容易出现心脏出血的情况
我有一个Ubuntu 12.04服务器。我已更新OpenSSL软件包以修复令人讨厌的漏洞。但是,即使我重新启动了Web服务器,甚至整个服务器,我仍然容易受到攻击。 要检查我的漏洞,我使用了: http://www.exploit-db.com/exploits/32745/ http://filippo.io/Heartbleed dpkg给出: dpkg -l |grep openssl ii openssl 1.0.1-4ubuntu5.12 Secure Socket Layer (SSL) binary and related cryptographic tools (launchpad.net/ubuntu/+source/openssl/1.0.1-4ubuntu5.12)

5
需要增加到上游unix套接字的nginx吞吐量-Linux内核调整吗?
我正在运行一个nginx服务器,它充当上游unix套接字的代理,如下所示: upstream app_server { server unix:/tmp/app.sock fail_timeout=0; } server { listen ###.###.###.###; server_name whatever.server; root /web/root; try_files $uri @app; location @app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://app_server; } } 反过来,某些应用服务器进程会在请求/tmp/app.sock可用时将其拉出。这里使用的特定应用服务器是Unicorn,但是我认为这与这个问题无关。 问题是,似乎经过一定的负载后,nginx无法以足够快的速率通过套接字获取请求。我设置了多少个应用服务器进程都没有关系。 我在nginx错误日志中收到大量这些消息: connect() to unix:/tmp/app.sock failed (11: Resource temporarily unavailable) while connecting …

1
NGINX-限制请求以防止滥用
我之所以要这样做,是因为用户使用JavaScript使用我们的API进行开发,并且一些开发人员搞砸了,并导致访问者用AJAX请求猛击服务器。发生这种情况时,我希望能够将API请求限制为每分钟50个请求,或者达到某种程度。 注意:(特别是数据库密集型资源,因此可能是在路径级别而不是服务器范围内(例如,节流阀“ / json_api /”,但不是“ / static /”))。

4
将Amazon ELB后面的所有http请求重定向到https,而不使用if
目前,我有一个同时为http://www.example.org和https://www.example.org提供服务的ELB 。 我想进行设置,以便任何指向http://www.example.org的请求都重定向到https://www.example.org。 ELB将https请求作为http请求发送,因此使用: server { listen 80; server_name www.example.org; rewrite ^ https://$server_name$request_uri? permanent; } 将不会起作用,因为仍然会向nginx上的端口80 发出对https://www.example.org的请求。 我知道有可能将其重写为 server { listen 80; server_name www.example.org; if ($http_x_forwarded_proto != "https") { rewrite ^(.*)$ https://$server_name$1 permanent; } } 但是我读过的所有内容都表明,if应在nginx配置中不惜一切代价避免这种情况,这将针对每个单个请求。另外,这意味着我必须为运行状况检查设置一个特殊的单独配置(如此处所述:“ ...当您位于ELB后面时,ELB充当HTTPS终结点,并且仅向服务器发送HTTP流量,您中断对ELB所需的运行状况检查使用HTTP 200 OK响应进行响应的能力”)。 我正在考虑将登录名放在Web应用程序的代码中,而不是nginx配置中(出于这个问题的目的,我们假设它是基于Django的应用程序),但是我不确定这是否会比在if 配置中。

1
不断不得不重新加载PHP-FPM
我们有一台运行Nginx和PHP-FPM的服务器。该服务器上有6个网站,运行PHP-FPM和nginx。该软件是所有vBulletin 3.8和WordPress。数据库位于单独的服务器上。 现在,由于这些网站非常受欢迎,因此通常一次我们有7-8,000名访问者在线,每个页面大部分都访问数据库。我相信这是造成我们问题的原因。 因为我们在MySQL服务器上有许多大型数据库,并且坦白地说,由于查询可以在软件中更好,所以我认为MySQL偶尔会无法及时将结果返回给PHP,从而产生级联效应,最终导致一切停止,直到我们重新加载PHP-FPM。完成之后,一切又开始正常运转。 我在排除故障时遇到问题的原因是因为我无法真正从日志中识别出任何东西。在MySQL慢查询日志中,当停机发生时,我什么都没看到。在nginx日志中,我看到成千上万的条目说读请求超时或连接超时(到PHP-FPM)。并且在PHP-FPM日志中,我看到很多行显示“执行超时(31秒),终止 所以在这一点上,我完全不知道在哪里寻找问题。显然,无论发生什么事情,都是因为这些脚本有时执行得不够快(通常它们在不到一秒钟的时间内加载,但是某些事情导致加载时间猛增)。一天发生多次这种情况,对我们来说已经成为一个大问题。 现在,我只是有一个crontab来每隔10分钟重新加载php5-fpm,这可以解决崩溃问题。当然,当PHP重新加载时,nginx会抛出502网关错误,因此这并不是解决方案。 如果这很重要,PHP将运行APC缓存。我读过一些地方,在某些情况下APC可能导致挂起。 任何指针都会有所帮助。我真的不想一直担心这台机器。 当然,可以提供更多信息。请让我知道您的需求。 更新:我只是通过apc.php复制到Web根目录并访问它以查看我们的统计信息。事情看起来不错。然后,我单击链接转到“用户统计”,然后BOOM服务器立即挂起。我重新加载了php-fpm,然后重新加载了用户统计信息页面,一切顺利。等待一分钟,重新加载,服务器再次挂起。 因此,这似乎与APC有关。问题是-我们该如何解决? APC配置: [apc] apc.enabled="1" apc.stat = "1" apc.max_file_size = "2M" apc.localcache = "1" apc.localcache.size = "256" apc.shm_segments = "1" apc.ttl = "3600" apc.user_ttl = "7200" apc.gc_ttl = "3600" apc.cache_by_default = "1" apc.filters = "" apc.write_lock = "1" apc.num_files_hint= "10000" …
27 mysql  nginx  php-fpm 

2
Nginx:在一条路径上强制使用SSL,在另一条路径上强制使用非SSL
如何设置Nginx conf文件以仅在站点中的一个路径上强制使用SSL,而在其余所有路径上强制使用非SSL? 例如,我希望/ user下的所有URL为https,但其余所有URL为http。 对于第一部分,我有: rewrite ^/user(.*) https://$http_host$request_uri?; 我不想使用“如果”。我认为它将利用操作顺序的优势,但我不想陷入循环。
27 nginx  ssl 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.