Articles of nginx

nprox在haproxy后面的问题

我主持一个Ajax网站(AngularJS),它的资产/部分驻留在我的静态资产服务器上运行nginx后面haproxy。 我的设置如下所示: Web -> Haproxy -> App (custom) and Static (nginx) servers 现在,不时加载特定资产(HTML部分),或者在一次或多次浏览器刷新后才开始加载(Chrome的networking工具显示“未完成”)。 我不知道这是什么原因,因为assets / partials都在同一个文件夹中,而其他的只是加载好。 这里有2个configuration,也许你可以发现一些可疑的东西? 我怎样才能有效地debugging这些问题? haproxy.cfg.j2 🙁这是一个Jinja2模板,所以不要被模板语法混淆) # requires haproxy 1.5+ global log 127.0.0.1 local0 log 127.0.0.1 local1 notice maxconn 4096 user haproxy group haproxy daemon defaults log global mode http maxconn 4096 # Add x-forwarded-for header option forwardfor option redispatch option […]

Ubuntu语言环境对Python应用程序不正确

我在Amazon EC2的Ubuntu AMI上安装了NGINX – > UWSGI – > Django(python)堆栈。 访问名称中包含unicode字符的文件时遇到问题。 Django App(Mezzanine)的确切输出是 尝试访问包含path中的Unicode字符的文件,但不知何故当前的语言环境不支持utf-8。 您可能需要将“LC_ALL”设置为正确的值,例如:'en_US.UTF-8'。 现在,当我运行locale命令输出是: LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=en_US.UTF-8 对我来说,一切都看起来不错,所以接下来我添加了一些代码来打印出生成错误的代码段中的语言环境设置。 其结果是: locale.getdefaultlocale() = (None, None) locale.getpreferredencoding() = 'ANSI_X3.4-1968' sys.getdefaultencoding() = 'ascii' sys.getfilesystemencoding() = 'ANSI_X3.4-1968' 所以这看起来不正确,但我不知道如何解决它。 当我在python shell中运行相同的代码时,一切看起来好多了。 locale.getdefaultlocale() = ('en_US', 'UTF-8') locale.getpreferredencoding() = 'UTF-8' […]

奇怪的nginxconfiguration:多个重写规则不起作用

我有一个应用程序知道如何准备一些特殊的图像,并在另一台机器上运行(我试图把它用作图像服务器)。 当这些图像由应用程序准备并提供时,也可以通过一种可公开访问的path(如/image/files/medium/562.jpg)进行精确保存,以防止在进一步的请求中一次又一次地运行应用程序。 我的应用程序实现了前端控制器模式,所以我需要发送请求到我的应用程序/thumbnail/process/?qs=1&qs=2不是/thumbnail.php或类似的东西。 另外我需要从最终用户掩盖我真正的缩略图处理器url。 此时stream程如下: 最终用户发出图片请求,如/picture/small/518.jpg Nginx捕获它,并重写为/image/files/small/518.jpg因为实际上没有picture文件夹。 如果/image/files/small/518.jpg存在,nginx应该直接服务它,而不是传递请求到应用程序。 如果它不是(图像不存在),nginx必须重新(或redirect),并通过自定义URI请求传递给应用程序/thumbnail/process/?size=small&model=866 另外ngnix不应该接受其他请求,如果它不是一个图像请求,并应立即返回444。 所以,我试图通过为nginx编写自定义规则来解决这些问题,但不起作用。 已经处理的图像没有问题,但是它的生成404没有find响应,而不是将请求传递给应用程序。 我找不到这个configuration有什么问题,我错过了什么。 server { listen 127.0.0.1:80; server_name image.mydomain.com; root /var/www/public_html; location / { # I know if is evil. # Don't pass request to the application if it's not a image request! if ( $uri !~ ^/(image|picture|thumbnail)/(.*)$ ) { return 444; } } # […]

对于特定的XHR,在gdevtools中奇怪的错误的16000d响应时间

我们在我们的网站上有一些XHR,在Google开发者工具的networking时间线上报告为接收16035.5天。 实际上有一个回应,肯定不需要报告的时间;) 我回顾了HTTP头,对我来说一切都很好。 这个问题暂时没有发生,但是对于同一个XHR来说是一致的。 更奇怪的是:如果我直接执行相同的GET操作而不是使用AJAX,那么定时报告是正确的。 这可能是什么原因? 我怀疑有些错误的回应,但是我看不到任何不正常的事情。 Request Method:GET Status Code:200 OK Request Headers: Accept:*/* Accept-Encoding:gzip,deflate,sdch Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4 Connection:keep-alive Content-Type:application/x-www-form-urlencoded; charset=UTF-8 Cookie: […snip…] Host: […snip…] Referer: […snip…] User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36 X-Requested-With:XMLHttpRequest Response Headers: Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Connection:close Content-Encoding:gzip Content-Type:application/json Date:Mon, 09 Dec 2013 06:22:30 GMT Expires:Thu, […]

Subsonic不能在nginx后面工作,因为; jsessionid =被添加到每一个URL

我开始使用nginx作为前端,以便通过子域标准化我的服务访问。 它适用于pydio和webmail(RainLoop,非常好),但Subsonic不会login。 没有错误信息,它只是返回到login页面,而不是显示我的音乐库。 请看附件,甚至直接访问(左版本)的头版的颜色和格式是不同的(正确的版本)。 Nginx正在将“; jsessionid =”作品附加到每一个地址,这似乎正在损害亚音速行为。 我究竟做错了什么? 我浏览论坛和更复杂的设置(例如SSL)的人可以把nginx代理Subsonic启动和运行。 我的设置是: 亚音速服务器 惠普微型服务器在家里 Ubuntu 13.10 x64 Subsonic 4.9.beta2(build 3634) Apache Tomcat / 6.0.37,java 1.7.0_25 Nginx服务器 数字海洋便宜的服务器(512MB,20GB SSD) Ubuntu 13.10 x64 nginx版本:nginx / 1.4.1(Ubuntu) 服务器{听80; server_name pydio.mydomain.com; 位置/ {proxy_pass http://aaa.bbb.ccc.ddd:9090 / pydio / ; }} 服务器{听80; server_name subsonic.mydomain.com; location / {proxy_pass http://aaa.bbb.ccc.ddd:8070 / subsonic / ; } […]

nginx和php-fpm的性能cpu绑定

在繁忙时间我们的服务器是CPU限制。 我们正在达到100%的CPU。 在一个大型的ec2实例上使用php5-fpm和nginx。 每天提供约5000万个请求。 我们正在使用此服务器来提供JSON结果。 我想configuration我们的服务器来检测任何地方,我们可能能够优化我们的CPU使用率。 但大多数基准testing工具logging响应时间,而不是资源使用。 有什么工具可以确定每个事务的CPU使用情况吗?

fail2ban监狱工作不正常

我试图用fail2ban阻止不可用的脚本请求到nginx。 # Noscript filter /etc/fail2ban/filter.d/nginx-noscript.conf: # # Block IPs trying to execute scripts such as .php, .pl, .exe and other funny scripts. # # Matches eg # 192.168.1.1 – – "GET /something.cgi # [Definition] failregex = ^<HOST> -.*GET.*(\.asp|\.exe|\.pl|\.cgi|\scgi) ignoreregex = 但是如果访问日志中的引用者拥有脚本标签,这也会产生一个命中。 例如:(我已经混淆了IP和引用者,并且我截断了多行,在真正的日志中,这四行是在一行上)。 1.2.3.4 – – [16/Dec/2013:18:01:10 +0100] "GET / HTTP/1.1" 301 178 "http://referrer.com/default.aspx" "Mozilla/5.0 (Windows […]

Nginx将域名redirect到端口8000

我一直在寻find处找出为什么我的nginx服务器在一个域上导致301redirect,而不是其他。 我有两个站点configuration在这个服务器上的apache风格(网站可用)。 让我们说,domain1.com和domain2.com。 我也运行PHP-FPM。 这里是configuration Domain1.com server { listen 80; ## listen for ipv4; this line is default and implied server_name domain1.com www.domain1.com; root /var/www/domain1.com; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$args; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 […]

Nginx和CouchDB反向代理不工作

我正在尝试代理[ http:// localhost:5984]到[ http:// localhost / couchdb] 。 我正在运行nginx的代理。 我遵循http://wiki.apache.org/couchdb/Nginx_As_a_Reverse_Proxy中提到的相同的方法, location /couchdb { rewrite /couchdb/(.*) /$1 break; proxy_pass http://127.0.0.1:5984; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } 但是当我运行curl本地主机/ couchdb我得到以下错误 {"error":"not_found","reason":"no_db_file"} 但是,当我运行curl localhost:5984我从couchdb得到了有效的响应。 {"couchdb":"Welcome","uuid":"337bb4394efe84536a68a63eee55333f","version":"1.5.0","vendor": {"name":"The Apache Software Foundation","version":"1.5.0"}} 但是当我运行curl本地主机:5984 / couchdb我得到了同样的错误(和日志),我通过反向代理接收。 couchdb日志文件如下所示 [Fri, 24 Jan 2014 20:41:29 GMT] [debug] [<0.120.0>] 'GET' /couchdb […]

Nginx $ urivariables在处理过程中被截断

我们有NGinX作为PHP Web应用程序的代理服务器。 PHP脚本由PHP-FPM进程提供。 以下是nginx的configuration: location /app/ { alias /var/www/html; location ~* \.(js|css|png|jpg|jpeg|gif|ico|eot|svg|ttf|woff)$ { alias /var/www/html; expires 24h; log_not_found on; try_files $uri $uri; } rewrite /app.* /app/index.php?$args; location ~ \.php$ { try_files $uri =404; # typical php-fpm configuration } } # wordpress site hosted on root of the domain location / { try_files $uri $uri/ /index.php?$args; […]