Questions tagged «nginx»

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

3
是否有一种优雅的方法可以立即阻止大量引荐来源?
为了防止引荐来源垃圾邮件,我的nginx.conf包含以下部分: if ($http_referer ~* spamdomain1\.com) { return 444; } if ($http_referer ~* spamdomain2\.com) { return 444; } if ($http_referer ~* spamdomain3\.com) { return 444; } 这些规则告诉nginx仅在用户设置了这些引荐来源网址之一的情况下关闭连接。有没有更优雅的方法可以做到这一点?我可以定义这些域的列表,然后说类似“如果引用者在此列表中,然后返回444”吗?
21 nginx 

2
在Nginx代理中禁用URL解码
当我浏览到该URL时:http://localhost:8080/foo/%5B-%5D服务器(nc -l 8080)照原样接收它: GET /foo/%5B-%5D HTTP/1.1 但是,当我通过nginx(1.1.19)代理此应用程序时: location /foo { proxy_pass http://localhost:8080/foo; } 通过nginx端口路由的相同请求将通过解码的路径转发: GET /foo/[-] HTTP/1.1 GET路径中已解码的方括号会导致目标服务器中的错误(HTTP状态400-路径中的非法字符...)在未转义的情况下到达。 有没有一种方法可以禁用URL解码或对其进行编码,以便目标服务器通过nginx路由时获得完全相同的路径?一些聪明的URL重写规则?
21 nginx  rewrite  url 

4
如何使Nginx支持@ font-face格式并允许access-control-allow-origin?
我将这些规则添加到mime.types: application/x-font-ttf ttf; font/opentype otf; application/vnd.ms-fontobject eot; font/x-woff woff; 现在,已经为每个内容正确设置了Content-Type标头。我现在唯一的问题是Firefox需要Access-Control-Allow-Origin。我已经用谷歌搜索了这个答案,并将其添加到我的服务器指令中: location ~* \.(eot|ttf|woff)$ { add_header Access-Control-Allow-Origin *; } 但现在根本不提供我的字体。 而是error.log报告它正在尝试在本地文件系统上打开它们。 2010/10/02 22:20:21 [错误] 1641#0:* 15 open()“ /usr/local/nginx/html/fonts/mgopenmodernabold-webfont.woff”失败(2:无此类文件或目录) ,客户端:69.164.216.142,服务器:static.arounds.org,请求:“ HEAD /fonts/mgopenmodernabold-webfont.woff HTTP / 1.1”,主机:“ static.arounds.org” 有什么想法可以解决语法问题吗?我是否需要明确添加一条规则,说不要尝试在本地打开它? 编辑:我认为问题是我现在在2个不同的位置。而不是我应该在主要的内部进行正则表达式检查,然后提供标题。

6
为什么Nginx比lighttpd更受欢迎?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我想在生产中使用Lighttpd来提供Django应用程序,但是我发现这些天Nginx越来越流行。这是为什么?我知道过去Lighttpd会发生内存泄漏,但是现在不解决吗?他们确实有活跃的开发人员来修复此类问题,不是吗? 有什么理由让我选择Nginx代替Lighty吗?我知道nginx是一台出色的服务器,但它真的好过又好过吗?
21 nginx  lighttpd  django 


3
Nginx连接超时和客户端关闭连接问题
我的nginx服务器在AWS上运行,并且一直运行良好,直到最近,几个用户开始抱怨该网站直到他们进行了10次访问尝试才无法打开。 我从来没有能够从我这一方面来解决这个问题。我正在使用Google的dns,即8.8.8.8,当我为其中一位用户更改相同名称时,该网站运行正常。现在,这可能是原因,也可能仅仅是巧合。 我在错误日志中找到了这个- 2014/05/29 13:46:15 [info] 6940#0: *150649 client timed out (110: Connection timed out) while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80 2014/05/29 13:46:20 [info] 6940#0: *150670 client closed connection while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80 2014/05/29 13:46:20 [info] 6940#0: *150653 client closed connection while waiting for …

3
NGINX add_header,添加多个头
我正在尝试发送多个标题 add_header Access-Control-Allow-Origin http://dev.anuary.com; add_header Access-Control-Allow-Origin https://dev.anuary.com; 但是,NGINX却使它们成为 Access-Control-Allow-Origin: http://dev.anuary.com, https://dev.anuary.com 有什么解决方案?
21 nginx 

3
当与proxy_pass一起使用时,为什么sub_filter似乎不起作用?
给定nginx的以下配置: server { listen 80; server_name apilocal; sub_filter "apiupstream/api" "apilocal"; sub_filter_once off; location /people/ { proxy_pass http://apiupstream/api/people/; proxy_set_header Accept-Encoding ""; } } Sub_filter不能正确响应部分响应。从配置中删除proxy_pass后,它便可以正常工作。许多遇到此问题的人最终都从上游服务器获得了gzip压缩。我已验证上游服务器的响应未打开gzip编码。但以防万一,我还使用了上面的proxy_set_header来不接受gzip。 我可能还缺少其他东西吗?
21 nginx  proxy 

3
nginx记录到access.log.1而不是access.log,logrotate失败了吗?
我有一个Nginx实例,该实例设置为记录对/var/log/nginx/access.log的访问权限和对/var/log/nginx/errors.log的错误记录,但是每周logrotate运行时,文件就会移至* .log.1和新的* .log文件已创建,但是nginx继续登录到log.1文件而不是新的.log文件(并且未压缩任何内容)。我第一次注意到这一点,距日志轮转已经有3周了,日志越来越大。运行kill -HUP `cat /run/nginx.pid`使nginx重新开始记录到正确的位置,但是问题在下周再次开始。 令人沮丧的更重要原因是我将日志设置为通过rsyslog上传到Loggly,并且当nginx停止记录到文件时,我进行了rsyslog轮询,然后事情停止了上传,并且我没有收到任何警报。 我怀疑它与重启nginx或重新加载配置有关,因为它直到我进行配置更改并以我认为正常的方式重新加载配置后才启动。我尝试运行,kill -USR1 `cat /run/nginx.pid`但是文件继续记录到错误的位置,直到我运行为止kill -HUP `cat /run/nginx.pid`,我已经知道这不能解决问题。 知道发生了什么吗?我承认我不是logrotate或nginx管理方面的专家,但我的Google在这方面的工作使我失败了。 这是我的nginx logrotate脚本,让我知道您是否还想看到其他内容。除了定义输出位置之外,nginx.conf在日志记录方面没有什么特别之处。 /var/log/nginx/*.log { weekly missingok rotate 52 compress delaycompress notifempty create 0640 www-data adm sharedscripts prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi \ endscript postrotate [ -s /run/nginx.pid ] …

3
将通配符子域重定向到https(nginx)
我已经获得了通配符ssl认证,并且正在尝试将所有非ssl流量重定向到ssl。目前,我正在使用以下内容重定向正常工作的非子域化的url。 server { listen 80; server_name mydomain.com; #Rewrite all nonssl requests to ssl. rewrite ^ https://$server_name$request_uri? permanent; } 当我对* .mydomain.com做同样的事情时,它在逻辑上重定向到 https://%2A.mydomain.com/ 您如何将所有子域重定向到它们的https等效项?
20 nginx  https 

1
推荐的Nginx + WSGI配置
此问题已从堆栈溢出迁移,因为可以在服务器故障时回答。 迁移 7年前。 使用不同的Nginx WSGI接口时,请说明优点/缺点?请详细说明每种配置有何区别?哪种配置最合适? 如果相关,您现在正在运行什么,为什么? 我见过一些技巧,但是请告诉我是否错过任何技巧: Mod_wsgi uWSGI通过Nginx的uWSGI FastCGI + flup 代理另一个WSGI服务器(gevent,gunicorn,龙卷风,FAPWS3)

4
nginx + PHP-FPM = nginx日志中的“权限被拒绝”错误13;配置错误?
我已经在一台RHEL5服务器上在PHP 5.2.10下运行nginx 0.7x + PHP-FPM,但是试图在第二台服务器上在PHP 5.3.3的捆绑式PHP-FPM下复制该设置,每次有GET时都会出现权限错误。 FPM已启动,并确认fastcgi在9000上进行侦听,但是每次执行GET时,我都会在nginx日志中看到此错误: 2010/08/12 23:38:53 [crit] 5019#0: *5 stat() "/home/noisepages/www/" failed (13: Permission denied), client: 24.215.173.141, server: dev.noisepages.com, request: "GET / HTTP/1.1", host: "dev.noisepages.com" 准系统nginx.conf.default至少可以运行。这是我的nginx.conf server { listen 80; server_name dev.noisepages.com; root /home/noisepages/www; index index.html index.htm index.php; access_log logs/dev.access.log; error_log logs/dev.error.log; location / { if (-f …

2
在nginx位置块中,符号“ @”是什么意思?
我在这里遇到了一些使用以下语法的问题和答案: location @default { # ... } location /somewhere { try_files $uri @default; } 我在Google上搜索过很多东西,但似乎找不到任何文档。这是什么意思,实际用途是什么?它是某种变量声明和赋值吗?对不起,新手问题。
20 nginx 

1
对于服务器发送事件(SSE),哪种Nginx代理配置合适?
对于适用于SSE的Nginx配置,我已经阅读了很多不同的问题,并得出了一些令人困惑的结果,说明要使用哪种设置: /programming/17529421/sending-server-sent-events-through-a-socket-in-c /programming/13672743/eventsource-server-sent-events-through-nginx /programming/21630509/server-sent-events-connection-timeout-on-node-js-via-nginx 那么正确的答案是什么?
20 nginx 


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.