nginx版本1.1.19的caching模块不考虑Vary报头。 这意味着即使Vary头中指定的某个字段的内容发生了Vary ,nginx也会提供相同的请求。 在我的情况下,我只关心Accept-Language标题,所有其他人已经照顾。 我怎样才能使nginxcaching一切, 但有一个Vary头包含Accept-Language响应? 我想我应该有这样的东西 location / { proxy_cache cache; proxy_cache_valid 10m; proxy_cache_valid 404 1m; if ($some_header ~ "Accept-Language") { # WHAT IS THE HEADER TO USE? set $contains_accept_language # HOW SHOULD THIS VARIABLE BE SET? } proxy_no_cache $contains_accept_language proxy_http_version 1.1; proxy_pass http://localhost:8001; } 但我不知道“从后端接收到的Vary头”的variables名称是什么。
我们在后端使用proxy_intercept_errors( http://wiki.nginx.org/HttpProxyModule#proxy_intercept_errors )。 我们拦截了一些状态代码,包括几个5xx状态代码。 我们的5xx(每个500有它自己的)处理程序都有一个access_log,所以我们可以看到所有5xx错误返回给用户在一个很好的干净的logging格式。 这个问题是,现在,我们不能告诉天气5xx是由nginx返回给用户或从我们的后端截获。 有什么办法可以区分两者? 谢谢。
我有这个相当大的htaccess,我写了,但转换为Nginx对我来说是没有运气,我试过这个网站转换,但我重新加载nginx时有错误, 重新加载nginxconfiguration:nginx:[emerg]指令“rewrite”不是以“;”结尾的; 在/ etc / nginx / sites-enabled / mywebsite:22 这是我的完整htaccess: RewriteEngine On RewriteCond %{HTTP_HOST} ^www.mywebsite.org$ [NC] RewriteRule ^(.*)$ http://mywebsite.org/$1 [R=301,L] RewriteBase / RewriteRule ^lang/(.*?)$ index.php?lang=$1 RewriteRule ^([az]{2})/?$ index.php?lang=$1 RewriteRule ^message/(.*?)$ index.php?msg=$1 RewriteRule ^add(/(.*?))?$ index.php?mode=add&msg=$2 RewriteRule ^world/?$ index.php?mode=map RewriteRule ^advanced(/(.*?))?$ search.php?mode=advanced&msg=$2 RewriteRule ^addrecord/? record.php RewriteRule ^updaterecord/?$ record.php?mode=edit RewriteRule ^contributerecord/?$ record.php?mode=edit&contribution=1 RewriteRule ^search/([^/]*)/?([^/]*)/?([0-9]{2,3})/? search.php?q=$1&page=$2&limit=$3 RewriteRule ^search/([^/]*)/?([^/]*)/includes/?([^/]*)/?([^/]*)/?$ […]
我对我的nginx服务器有问题。 我对nginx相当陌生,所以configuration文件不是我最强(还) 我在/etc/nginx/conf.d/中有这个default.conf: server { listen 80; server_name _; #charset koi8-r; #access_log logs/host.access.log main; location / { root /usr/share/nginx/html; index index.php index.html index.htm; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { […]
我用我的ubuntu 10.04 / nginx 1.2.3服务器,这真的很奇怪的行为。 基本上我今天早上更改了SSL证书。 从那以后,它在所有的应用程序上都performance得很怪异。 Godaddy报告说HTTPS / SSL设置是正确的。 当我尝试一个页面时,它仍然正常工作,当我使用HTTPS。 但是当我尝试使用HTTP nginx报告错误: 400 Bad Request The plain HTTP request was sent to HTTPS port 经过几个小时在谷歌环顾四周,我已经尝试了不同的设置(原来我的设置长时间工作正常,我只是更新证书) 我发现一半的解决scheme添加到我的configuration: error_page 497 $ request_uri; 真正奇怪的是,当我使用这个设置: server { listen 80; server_name john.johnrocks.eu; access_log /home/john/envs/john_prod/nginx_access.log; error_log /home/john/envs/john_prod/nginx_error.log; location / { uwsgi_pass unix:///home/john/envs/john_prod/john.sock; include uwsgi_params; } location /media { alias /home/john/envs/john_prod/johntab/www; […]
我正在使用多个HAProxy负载平衡器,Nginx Web服务器和MySQL服务器构build一个高度可用的站点。 该网站需要能够承受负载平衡器或networking服务器节点下线,而不会中断访问者的服务。 目前,我有两个运行HAProxy的盒子,它们使用keepalived共享一个虚拟IP,然后转发给运行Nginx的两个Web服务器,然后使用MySQL复制绑定到两个MySQL盒子,并使用心跳共享一个虚拟IP。 除了HAProxy上的SSLstream量外,一切正常。 我正在运行版本1.5 dev12与编译的openssl支持。当我尝试通过https导航到haproxy的虚拟IP,我得到的消息:纯HTTP请求被发送到HTTPS端口。 这里是我的haproxy.cfg到目前为止,主要是从其他post组装: global log 127.0.0.1 local0 log 127.0.0.1 local1 notice # log 127.0.0.1 local0 user haproxy group haproxy daemon maxconn 20000 defaults log global option dontlognull balance leastconn clitimeout 60000 srvtimeout 60000 contimeout 5000 retries 3 option redispatch listen front bind :80 bind :443 ssl crt /etc/pki/tls/certs/cert.pem mode http […]
我有一个geoip的nginx,但它不正确。 接下来的问题是: Nginx正在从$_SERVER['REMOTE_ADDR']而不是$_SERVER['HTTP_X_HAPROXY_IP']具有真实客户端IP的地理数据。 所以,报告的地理数据属于我的服务器IP而不是客户端IP。 有没有人可能是错误来解决它? Nginx的版本和编译模块: nginx -V nginx version: nginx/1.2.3 TLS SNI support enabled configure arguments: –prefix=/etc/nginx –conf-path=/etc/nginx/nginx.conf –error-log- path=/var/log/nginx/error.log –http-client-body-temp-path=/var/lib/nginx/body –http-fastcgi-temp-path=/var/lib/nginx/fastcgi –http-log-path=/var/log/nginx/access.log –http-proxy-temp-path=/var/lib/nginx/proxy –http-scgi-temp-path=/var/lib/nginx/scgi –http-uwsgi-temp-path=/var/lib/nginx/uwsgi –lock-path=/var/lock/nginx.lock –pid-path=/var/run/nginx.pid –with-pcre-jit –with-debug –with-file-aio –with-http_addition_module –with-http_dav_module –with-http_geoip_module –with-http_gzip_static_module –with-http_image_filter_module –with-http_realip_module –with-http_secure_link_module –with-http_stub_status_module –with-http_ssl_module –with-http_sub_module –with-http_xslt_module –with-ipv6 –with-sha1=/usr/include/openssl –with-md5=/usr/include/openssl –with-mail –with-mail_ssl_module –add-module=/usr/src/nginx/source/nginx-1.2.3/debian/modules/nginx-auth-pam –add-module=/usr/src/nginx/source/nginx-1.2.3/debian/modules/nginx-echo –add-module=/usr/src/nginx/source/nginx-1.2.3/debian/modules/nginx-upstream-fair –add-module=/usr/src/nginx/source/nginx-1.2.3/debian/modules/nginx-dav-ext-module –add-module=/usr/src/nginx/source/nginx-1.2.3/debian/modules/nginx-syslog –add-module=/usr/src/nginx/source/nginx-1.2.3/debian/modules/nginx-cache-purge nginx网站conf(前端机器) […]
我正在构build2盒,每个将是静态内容服务器(NginX)+负载平衡器(HAproxy)+ DNS服务器(NSD)。 (A)logging的每台DNS服务器上的TTL大概是30-60秒。 解决将是这样的: LB1(NS1)==parsing==> xx.xx.xx.01(LB1) LB2(NS2)==parsing==> xx.xx.xx.02(LB2) 这样,如果由于任何原因,这些LB中的一个出现故障,那么预期的停机时间将是30-60秒(TTL时间),因为每个工作LB将parsing为它自己的IP,当其中一个停机时,另一个LB DNS服务器将自行解决请求。 这两个LB不在同一个位置,所以它可能不是一个设置故障转移IP(或类似心跳,keepalived等)的选项。 我有几个问题,也..愿意真正感谢任何build立一个坚实的高度可用的系统。 有没有一种方法可以在我自己的DNS服务器中configurationDNS查询超时2秒钟(如果我们快速传递给其他服务器的任何DNS查询,如果没有响应从第一个发送)? 这两个LB会有超过3万个并发连接,这是太多了吗?! 在这种情况下,build议一些好的configuration,有助于保持我的箱子坚实? 这是一个很好的设置? 呃..哈哈。 最后,据你所知,由于2 DNS服务器指向2个不同的IP是否影响我的网站search引擎优化? – 谢谢
我有一个nginx服务器,坐在运行django的apache前面。 我的网站大部分是静态内容: http : //www.grovemade.com/ 我的应用程序服务器可以处理需要dynamic的部分(POST,购物车,订单状态,常见问题等)。 绝大多数命中是静态页面,如产品页面,关于页面,ajax获取请求。 它像一个冠军直接从memcached处理页面。 其实我问过SF在这里确定我的瓶颈: 这是否certificate了networking带宽瓶颈? 而且受到我的主机出站stream量限制。 因此对于我需要的任何东西都是100%的能力。 因为这些数字我都很兴奋; 但是这些数字并不意味着当40页纸被轰炸时,嘿,让我成为一个新的caching! “嘿,我也是!” 唯一的问题是,在stream量大的时候,第二个caching过期了一个特定的页面,我的应用程序服务器遇到了数以千计的请求,这使得所有的东西都陷入了/可能导致服务器崩溃。 我想象的更像是… 答:应用程序服务器按照自己的步调自动将内容推送到memcached(因为它肯定可以填充caching……只有几百个同时进行)。 前端服务器使用它所具有的function – 从不尝试代理获取请求。 地狱,它可以为我所关心的所有人留下一个空白的页面。 至less应用程序服务器将是活着的,接受订单,并能够在未来的某个时刻填充那个破损的页面,而不是一个向下的死亡螺旋,我甚至无法拿起我的盾(memcached)。 问题是:我不得不build立一个系统,确定应该从多个地方caching的每个页面。 Django知道要caching哪些页面; 我想这很容易。 但是nginx – > django:我不希望它代理一切(否则我会处于相同的情况); 所以我必须在一个单独的位置编写更多的逻辑。 咩。 B:Nginx可以限制与应用服务器的连接。 但是,它将如何区分应用程序服务器排队的请求和我只希望它build立单个连接的types? 毕竟,应用程序决定是否应该caching页面。 如果它正在我的应用程序服务器上等待简单的dynamic内容(如提取订单详细信息),我不希望它删除连接。 在caching/应用程序之间build立一个请求响应循环,通知需要build立一个页面? 而后来的请求应该被忽略? 等等。 所以,考虑到99%的stream量是由nginx来满足的,而我的应用服务器真的只是X%谁转换并使其成为一个dynamic页面有趣,我应该怎么做,以防止我的应用服务器在几秒钟内完全淹没它响应的地方: 嘿,你! 让我为你回到这个页面。 还有1000多人想要吗? 好吧,我会这样做,如果我可以的话。 现实世界的问题/例子:今天,我们得到了巨大的命中。 我们通常不会获得很多stream量,但是我们今天发布了我们的产品,预购客户就像疯了似的。 服务器现在正在处理stream量@ 20%的容量,但是有一些非常非常粗略的时间,当我试图生成一个小时caching定时器过期时每个人都点击的小块页面时,我几乎失去了它。 我疯狂地select了最重要的caching页面,并试图将它们保存在caching中。 那是/不是/乐趣! 我也手动拉动从8080上运行的Apache的HTML,并把它们放到memcached。 如果我的apache进程内存不足,完全崩溃说memcached或花了足够长的时间,以至于过期的密钥,会有一个点… …“难以回报”,在那么多的人会绕过caching,我的服务器会比平常更加重载/因此如果不阻止所有请求并开始手动填充高速caching,通常是不可恢复的。 通常做什么来完成这项工作? 对不起,这是一种思路。 […]
我试图在代理后面运行Fisheye。 到目前为止,我已经设法让Jira和Stash在代理之后工作,但不是Fisheye。 这是我在Nginx的configuration文件: server { listen 80; server_name dev.int.com; access_log off; location / { proxy_pass http://IP:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $remote_addr; port_in_redirect off; proxy_redirect http://IP:8080/jira /; proxy_connect_timeout 300; } location ~ ^/stash { proxy_pass http://IP:7990; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $remote_addr; port_in_redirect off; proxy_redirect http://IP:7990/ /stash; proxy_connect_timeout 300; […]