Articles of nginx

我怎样才能确保Nginx提供纯文本文件作为下载,而不是内联?

我有Rails应用程序(Redmine)与Nginx合作。 如果我点击任何附件,我的浏览器(Firefox,即铬)要求我下载文件。 但是,如果我点击txttypes的附件,我的浏览器在浏览器中打开这个文件。 据我所知,这是Nginx的任务来决定 – 在浏览器中打开文件或下载它。 我如何设置它?

Nginx:位置正则expression式,适用于多个具有后端的path

我有两个位置在nginxconfiguration工作: location ^~ /media/ { proxy_pass http://backend.example.com; } location ^~ /static/ { proxy_pass http://backend.example.com; } 我怎样才能把这两个结合到一个位置? 我已经做了什么: 我试过这个build议 location ~ ^/(static|media)/ { proxy_pass http://backend.example.com; } 但它不适合我。 另外,当我不使用后端时,以下configurationfunction正常: location ~ ^/(static|media)/ { root /home/project_root; } 更新 (从日志中的一些string) xx.xx.xx.xx – – [31/Dec/2013:13:48:18 +0000] "GET /content/11160/ HTTP/1.1" 200 5310 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like […]

Nginx set_real_ip_from AWS ELB负载均衡器地址

我有一套Amazon ELB负载均衡器后面的Nginx服务器。 我使用set_real_ip(来自HttpRealIpModule ),以便我可以访问这些服务器上的原始客户端IP地址(用于传递给php-fpm并在HttpGeoIPModule中使用)。 似乎nginxconfiguration中的set_real_ip_from只能接受一个I​​P地址。 但是,亚马逊对ELB机器说: 注意:由于与LoadBalancer关联的一组IP地址可能会随时间而改变,因此您绝不应使用任何特定的IP地址创build“A”logging。 如果要为LoadBalancer使用友好的DNS名称而不是Elastic Load Balancing服务生成的名称,则应该为LoadBalancer DNS名称创buildCNAMElogging,或使用Amazon Route 53创build托pipe区域。 有关更多信息,请参阅使用具有Elastic Load Balancing的域名 但是,如果我需要inputIP地址,我不能使用CNAME(亚马逊或我自己的)。 有没有解决这个问题?

Nginx的add_header为50 *页面

我目前正在尝试让nginx在发送某种types的50 *错误时向响应添加一个头。 我已经有一个http块的add_header指令,并得到尊重的所有请求,除了似乎错误。 我也在我的一个鬼中尝试了以下几点: location /mediocregopheristhecoolest { add_header X-Test "blahblahblah"; return 502; } 去那个页面给了我一个502,但没有标题。 这只是nginx不能做的事情,还是我做错了?

阻止其他应用程序绑定到端口80和443

上个星期,我接到了一个害怕的客户的电话,因为他认为他的网站被黑客攻击了。 当我查看他的网站时,我看到了apache2默认页面。 那天晚上我的服务器( Ubuntu 16.04 LTS )已经升级并重新启动。 通常当出现问题时,我会在晚上收到警报。 这次不是,因为监控系统检查HTTP状态码200,并且apache2默认页面带有状态码200。 发生了什么事是,在启动期间, apache2绑定到端口80和443比我的实际networking服务器nginx更快。 我没有自己安装apache2。 通过aptitude why apache2我发现php7.0包需要它。 简单地删除apache2将无法正常工作,因为显然php7.0需要它。 是否有可能创build一个限制,只有nginx允许绑定到端口80和443? 其他的解决scheme也是值得欢迎的。

nginx上传进度结合正常的请求

我有一个很好的虚拟主机nginx,运行良好,而不使用nginx上传模块。 当我添加上传进度到这个我的上传请求。 我该如何解决这个问题? 我需要使用/?r=upload或/upload?foo=bar上传我的文件,并使用/progress或其他方式跟踪上传进度数据。 # static9-localhost.sweb server { # upload limit # upload_limit_rate 10240; # request size limitation client_max_body_size 500m; client_body_buffer_size 64k; # document root root /path/to/webapp/static/public/; # index file index index.php; # server name server_name static9-localhost.sweb; # rewrite rules rewrite "^/thumbnail/([A-Za-z0-9]{12})/(.*)/.*$" /index.php?r=thb&unique=$1&prm=$2 last; # / location @frontcontroller { # expires expires max; # disable […]

如何configurationnginx接受gzip请求?

我知道你可以使用nginx HttpGzipModule来gzip 响应 。 你可以使用它来启用nginx来处理gzip压缩的请求 ,即与请求头的Content-Encoding: gzip : Content-Encoding: gzip ? 注意:在mod_deflate的帮助下,Apache可以使用指令SetInputFilter DEFLATE来处理gzip压缩的请求。 有关 http://forum.nginx.org/read.php?11,96472,214266

如何解决gunicorn关键工人超时错误?

我用nginx和gunicorn来托pipe我的网站在两台服务器上, 两台服务器都有相同版本的软件包,网站成功托pipe, 但在我的一个服务器gunicorn总是超时,我得到错误 [CRITICAL]Worker Timeout Booting worker with pid Worker cannot boot with pid 在此之后,我在网页中得到502 Badgateway错误。 我必须重新启动gunicorn进程来调出网站。 以下是错误日志: 2014-02-16 14:29:53 [1267] [CRITICAL] WORKER TIMEOUT (pid:4994) 2014-02-16 14:29:53 [1267] [CRITICAL] WORKER TIMEOUT (pid:4994) 2014-02-16 14:29:53 [22140] [INFO] Booting worker with pid: 22140 我得到这样的连续性错误, 2014-02-16 14:29:53 [22140] [DEBUG] Ignoring EPIPE Ignoring EPIPE 2014-02-16 14:29:53 [22140] [DEBUG] Ignoring […]

从Nginx反向代理转发自定义标题

我有一个nginx web服务器作为反向代理转发请求到Apache进行额外的处理(我求求你不要问为什么)。 我有一个请求,我试图附加一个自定义标题,我希望nginx将该自定义标题转发给Apache,以便我可以在应用程序中使用它。 我捅过了HttpProxyModule文档,但即使我在正确的位置,它们也不是非常具有描述性(很可能是因为我不是)。 我怎样才能让nginx转发一个X-CUSTOM-REFERRER头文件? 而且,如果可能的话,我希望它能够沿着任何自定义的标题前进。如果后者太多的话,前者就足以满足我目前的需求。 正如你所看到的,我对nginx很新,所以补救版本会有所帮助。 谢谢。 UPDATE 从我现有的configuration相关的片段: location / { proxy_pass http://preview; 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; # proxy_set_header X-Custom-Referrer $x_custom_referrer; }

OCSPvalidation – 无法获得本地发行者证书

我是新手,从头开始设置SSL,并完成了我的第一步。 我从RapidSSL为我的域名购买了一个SSL证书,然后执行安装证书的步骤。 一般来说,这个证书是有效的,在我的networking服务器(nginx v1.4.6 – Ubuntu 14.04.1 LTS)上工作,但是如果我想激活OCSP OCSP,那么在我的nginx error.log中会出现以下错误: 请求证书状态时,OCSP_basic_verify()失败(SSL:错误:27069065:OCSP例程:OCSP_basic_verify:证书validation错误:validation错误:无法获取本地颁发者证书),responder:gv.symcd.com 我也尝试了这个命令从命令行: openssl s_client -connect mydomain.tld:443 2>&1 </ dev / null 并得到了像我的error.log中的“相同”的错误: […] SSL会话:协议:TLSv1.2密码:ECDHE-RSA-AES256-GCM-SHA384开始时间:1411583991超时:300(秒)validation返回码:20发行人证书) 但是,如果下载GeoTrust Root Certificat并使用以下命令尝试: openssl s_client -connect mydomain.tld:443 -CAfile GeoTrust_Global_CA.pem 2>&1 </ dev / null validation是好的: […] SSL会话:协议:TLSv1.2密码:ECDHE-RSA-AES256-GCM-SHA384开始时间:1411583262超时:300(秒)validation返回码:0 所以不知何故GeoTrust根证书没有被发现/交付。 我的nginx网站configuration: server { listen 443; server_name mydomain.tld; ssl on; ssl_certificate /etc/ssl/certs/ssl.crt; ssl_certificate_key /etc/ssl/private/ssl.key; […]