Articles of nginx

如何避免与nginx的第一个字节超时

我在RubyOnRails中有一个应用程序,由CDN服务后面的NGINX服务器代理。 CDN有一个限制,如果响应的第一个字节没有在60秒内到达,CDN服务器响应: Error 503 first byte timeout 问题是,我确实有一些需要在Rails上处理超过60秒的请求。 有没有办法破解这个响应,在响应完成处理之前发送几个字节? 怎么样? 编辑1 : 我知道60年代已经很久了,我们正在想办法避免这种情况。 不过,我需要一个临时解决scheme,让60年代的请求工作。 即使我使用Ajax,一些Ajax调用也需要60多秒,而且会陷入同样的​​问题。 tcp_nopush或tcp_nodelay选项不起作用,我认为这是因为nginx正在等待rails应用程序响应,以知道它应该发送什么标题。 所以,也许这个解决scheme是我需要在RubyOnRails请求/响应周期内破解的

Nginx反向代理HTTPS到HTTP IIS后端

我有ASP.NET应用程序托pipe在后端IIS(Windows Server 2012 R2)和Debian与Nginx公开与SSL证书等公共。 Nginx代理http://myexample.com请求HTTP后端没有任何问题与configuration: server { listen 80; server_name my.example.com location / { proxy_pass http://backend:1234; } } 但是,当我尝试https://my.example.com – 网页浏览器获取链接https://my.example.com/Login.aspx (这是正确的),然后404未find。 HTTPS的Nginxconfiguration(我尝试了评论线,但仍404): server { listen 443 ssl http2; server_name my.example.com — SSL part — location = / { proxy_pass http://backend:1234; #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-Forwarded-Proto $scheme; #proxy_redirect http:// […]

Nginx服务器使用IP,但不能使用任意域名

我有一个Ubuntu Server 14.04的主机和一个LEMP堆栈,我打算用作我正在开发的Web应用程序的登台/testing服务器。 我没有服务器的域名,它可以正常使用IP地址。 但是,对于某些testing,我需要使用域名访问它。 所以我已经将下列内容添加到本地机器的主机文件中: 1.2.3.4 nt1.stg 在这个问题的IP显然不是我的服务器的真正的IP,但我使用nt1.stg作为域。 当我去http://1.2.3.4/path/to/script.php我得到了预期的回应。 但与http://nt1.stg/path/to/script.php我得到ERR_CONNECTION_RESET 。 我已经使用Wiresharkvalidation了使用第二个地址时发送的请求。 Wireshark捕获表明,随着请求,这种交换随之而来: Me > Server: (TCP) [SYN] Server > Me: (TCP) [ACK, SYN] Me > Server: (TCP) [ACK] Me > Server: (HTTP) GET /path/to/script.php HTTP/1.1 Server > Me: (TCP) [ACK] Server > Me: (TCP) [RST, ACK] 这是我的nginxconfiguration文件, 我在其中设置了server_name,并且也有default_server : server { listen 80 […]

nginx的add_header不能在我的一个位置工作

我使用nginx 1.10.1,configuration如下: server { (…) add_header Header1 "value"; (…) # in this location above add_header directive works location / { uwsgi_pass unix:/var/run/some.sock; (…) } # ..and it this one it doesn't! location ~* (^/$|favicon.ico|robots.txt) { return 204; expires 24h; add_header Cache-Control "public"; etag on; } } ..所以我的问题是,Header1设置为第一个位置处理的请求,但不是第二个。 为什么? 我已经阅读了add_header文档,并知道它默认情况下只适用于“积极”的返回代码,但204是其中之一(我已经testing了代码更改为200,404,并没有帮助)。 (我也试图添加到我的add_header Header1 …但是这是一个相当绝望的尝试,因为它不应该帮助 – 而事实并非如此。)

Nginx:将httpredirect到https(错误:redirect过多)

运行Nginx并尝试redirect: www到非www http到https 我意识到有类似的线程,但没有相同的情况。 我已经安装了Webmin / Virtualmin和Fast-CGI。 我在这个服务器上有很多帐号/网站。 对于mysite,这是服务器块: server { listen my_server_IP; server_name example.com www.example.com; return 301 https://example.com$request_uri; root /home/example/public_html; index index.html index.htm index.php; access_log /var/log/virtualmin/example.com_access_log; error_log /var/log/virtualmin/example.com_error_log; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_FILENAME /home/example/public_html$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI […]

受iframe注入感染的Webserver

我的networking服务器受到不明原因的严重感染。 来自服务器上托pipe的任何网站的每个页面都将通过iframe脚本进行注入。 第一天:我们的networking服务器软件是Apache。 确信没有网页脚本被修改后,我们看了这篇文章( https://blog.sucuri.net/2013/01/server-side-iframe-injections-via-apache-modules-and-sshd-backdoor .html )表示Apache模块可能会被攻破,所有的TCP数据包将在发送到WebBroswsers之前被修改。 第二天:我们用Nginxreplace了Apache。 一天没有问题就顺利运行了。 第3天:我们的客户向我们通报了同样的问题,Google Chrome向服务器上托pipe的所有网站发出了“网站不安全”的警告。 拼命地,我们备份一切,更换硬盘,安装一个全新的操作系统(FreeBSD 10.2,以前的FreeBSD 8.4)。 用裸OS和新的Nginx服务器,我们testing了请求到服务器,请求仍然感染iframe。 我们运行最新的clamav,rkhunter,但没有发现。

configurationnginxlogging原始请求者IP(而不是转发代理的IP)

在我支持的一个支持nginx的网站上,有些访问者在某个特定的代理之后。 由于请求通过代理的服务器,这些情况下的HTTP请求IP地址始终来自代理服务器,而不是原始请求者。 但是,代理确保将原始请求方IP包含在名为X-IORG-FBS-UIP的单独HTTP头字段中。 它也可以在X-FORWARDED-FOR中find。 在nginx访问日志中,我注意到代理IP是为所有这些用户显示的,而不是真实的IP。 我怎样才能configurationnginx的原始请求IP是由nginxlogging,而不是代理之一? 一个说明性的例子会很棒; 提前致谢! ps我的nginx是v 1.4.6

Nginx中的顺序是否重要?

我有这样的服务器文件 server { listen 80; server_name subdomain.example.com; return 301 https://$server_name$request_uri; location /.well-known/acme-challenge { root /var/www/letsencrypt; } } 现在当我尝试sudo letsencrypt renew 。 它抛出和错误说无法find。 .well-known/acme-challenge 。 但一旦我评论了return 301行重新启动服务器,它的工作。 现在我想重新testing它把位置放在第一位,而不是评论返回301声明,但它说certificate not due for renewal 。所以问题是文件读取的顺序,这是否重要? 而且不会因为这个原因而自动续约,那些续约的人又是如何处理这种情况的呢?

Nginx + PHP-FPM URI别名和多个php目录

我正在尝试configurationNginx在同一个域中的两个不同目录中托pipe多个基于PHP的应用程序。 我试图得到的结果是: http://webserver.local/ >应用程序从/path/to/website http://webserver.local/app >应用程序从/path/to/php-app 这是我的configuration。 当我点击http://webserver.local/时,一切正常(是PHP和非PHP资源)。 但是,当我转到http://webserver.local/app/index.php时,PHP脚本不工作。 我File Not Found (但是,文件在/path/to/php-app/index.php )。 我创build了一个文件/path/to/php-app/test.txt (不是PHP的东西),当我去http://webserver.local/app/test.txt时 ,我得到了预期的文本文件。 有人可以请说出我的错在哪里? 谢谢 :) server { listen 80; server_name webserver.local; location / { root /path/to/website; index index.php; location ~ \.php$ { root /path/to/website; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } location ^~ /app { alias […]

运行在Varnish和x-forward之后的Nginx,我该如何欺骗nginx?

我有一个设置,我正在看一个在varnishcaching后面运行nginx。 我目前使用Apache而不是清漆,并使用x -forward-for有让Apache欺骗认为remoteip是客户端IP地址,而不是代理地址。 我一直在试图谷歌,如果这可能与NginX,但到目前为止,我还没有find任何坚实的线索。 请告诉我,这确实是可能的!