Articles of nginx

nginx / memcached用于caching的Web代理

我试图将nginx设置为HTTP代理上的caching层 – 以及memcached来做实际的caching。 这里的目标是我们有一个内部应用程序,它会频繁地发出 HTTP请求,我们希望使用nginx + memcached作为Web代理来加速对这些传出客户端请求的响应。 (特别是因为许多请求可能是多余的)。 有很多关于设置nginx和memcached的很好的文档和信息,但是我遇到了一个问题,因为看起来我的特殊用例并不常见。 大多数教程,例子等假定读者正在运行一个网站 ,并且想要使用nginx + memcached来提高网站的性能。 但是我的用例是不同的。 我只想使用nginx作为Webcaching代理,并使用memcached作为caching的实际存储层。 同样,我对加速网站传入请求的性能不感兴趣 – 我对加快来自内部应用程序的传出 HTTP请求感兴趣。 所以,虽然似乎有很多在线的教程解释了如何将nginx设置为Webcaching代理 ,以及许多在线教程解释了如何将nginx + memcached设置为高性能cachingWeb服务器,但是,似乎很多解释如何将nginx设置为使用memcached执行实际caching的Webcaching代理。 好的,所以我试图在两条线之间读一遍,然后自己弄明白。 我有nginx和memcached都安装在开发盒本地。 我也使用“ 增强的Nginx Memcached模块 ”,而不是nginx自带的nginx + memcached模块,因为很明显,开箱即用的版本不会cachingHTTP头 (这看起来似乎使其在实践中无法使用,除非我在这里错过了一些东西)。 所以我的nginx.conf文件的相关部分是: upstream some-upstream-proxy { server proxy.giant-corporation.com:82; } upstream memcached_upstream { server 127.0.0.1:11211; keepalive 20; } server { listen 80 default_server; server_name my-cache-proxy; location […]

Nginx重写的URL无法redirect

我一直在尝试将types为https://subdomain.example.com/dash/#/story/9483的特定urlredirect到https://subdomain.example.com/dash/#/story/9483 我已经尝试使用这个重写规则,但它始终在最后添加?id=9483 。 rewrite ^/story_meta_info\.php.* https://$host/dash/#/story/$arg_title redirect; 我在某处做错了什么?

当Gunicorn返回一个500时,Nginx会因为“104:连接重置”而​​失败

我在运行Django和Gunicorn(19.6.0)后面Nginx(1.6.2)。 一切工作正常,一个小问题。 如果我发送一个JSON有效负载大于10KB的POST请求和Django答复500er我在Chrome中得到一个net::ERR_INCOMPLETE_CHUNKED_ENCODING和响应是空的,虽然Django发送一个JSONstring{"error":"some error description"} 。 Nginx日志显示104: Connection reset by peer : 如果POST请求的有效负载很小,我会得到预期的结果。 如果我发送相同的请求(也与大有效载荷)直接gunicorn发生错误,我得到了预期的回应。 我的Nginxconfiguration: server { listen 80 default_server; server_name _; client_max_body_size 10m; location /static/ { root /srv/yyyyy; } location /media/ { root /srv/yyyyy; } # Proxy Pass to Gunicorn location / { include proxy_params; proxy_pass http://unix:/srv/yyyyy/proxy_pass.sock; } } 我也testing了一下proxy_buffering off; 在位置块,但仍然是相同的结果。

从http响应通过nginx反向代理传递cookie

当我运行一个nginx作为代理(在docker容器中)时,我有一个传递我的cookie的问题。 这是我的nginx代理的configuration: location /test { proxy_pass http://test-backend:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } 当我运行我的后端没有代理我有我的回应中的cookie。 但是,如果我使用代理运行它的cookie没有通过代理传递。 我错过了什么样的设置?

Nginxcaching,在miss / bypass上redirect

有没有可能设置nginxcaching(nginx_proxy_cache)以不同的方式处理MISS / BYPASS: caching存在 – >使用它 cachingMISSed / BYPASSed / UPDATing – >redirect到后端服务器。 为什么我需要这个? 我有6个服务器与SATA驱动器上的静态mp4文件(所有克隆)。 并购买了新的固态硬盘来testing性能。 如果我使用标准的nginxcaching,是的,它会工作…几个小时后,它将从超载服务器下载1k x 10MB文件:) 我试图实现:“服务器如果caching,redirect到后端(而不是BYPASS!),同时caching/更新” 正如在评论中所问,如果我访问不在caching中的URL,我会得到这样的回应: GET http://xxx/content/mp4/yyy/zzz.mp4 HTTP/1.1 200 OK Server: nginx Date: Fri, 16 Dec 2016 23:44:54 GMT Content-Type: video/mp4 Content-Length: 25065219 Connection: keep-alive Last-Modified: Mon, 22 Jun 2015 02:34:00 GMT ETag: "55877418-17e7703" X-Cache-Status: MISS Accept-Ranges: bytes 正如你所看到的,有我想要的“位置”字段。 […]

redirect循环 – AWS ELB SSL Nginx

我们在AWS证书服务提供的ELB上安装证书,并在Nginx Web服务器上configuration自签名证书。 现在,当用户来到https://www.example.org/它说 www.example.orgredirect你太多次了。 ERR_TOO_MANY_REDIRECTS 以下是我的nginx conf文件 server { listen 80; listen 443 ssl; server_name example.org www.example.org *.example.org; access_log /var/www/example.org/logs/access.log; error_log /var/www/example.org/logs/error.log; root /var/www/example.org/httpdocs; ssl_certificate /etc/nginx/ssl/new/example.org.crt; ssl_certificate_key /etc/nginx/ssl/new/example.org.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; location / { index index.html index.php; try_files $uri $uri/ @handler; expires 30d; } location @handler { rewrite / /index.php; } location ~ .php/ […]

无法在Ubuntu 16.04上安装nginx(usr / bin / dpkg错误)

我一直试图在一个由vagrant处理的虚拟机上安装一个项目的依赖项,使用vmware_fusion作为提供者。 一切似乎工作正常,但只要我尝试安装nginx或sqlite3,我得到这样的输出: vagrant@vagrant:~$ sudo apt-get -f install Reading package lists… Done Building dependency tree Reading state information… Done Correcting dependencies… Done The following additional packages will be installed: nginx-common Suggested packages: fcgiwrap nginx-doc The following NEW packages will be installed: nginx-common 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 262 not […]

Nginx上游错误

看看我的plesk面板日志,我看到很多这些错误,我拿出我的域名,并在这个例子中添加domain.net 3747#0: *97365 connect() to unix:///var/www/vhosts/system/domain.net/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream 3743#0: *97344 connect() to unix:///var/www/vhosts/system/domain.net/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream 从我可以告诉这似乎不是正确的path为php-fpm.sock,但我不知道在哪里编辑它。 我正在使用Plesk Panel 12运行Ubuntu 14.04

Nginx重写ssl_protocols指令

我有一个全局的SSL选项文件,包含在每个服务器块中。 ssl_protocols TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0 ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_session_tickets off; # Requires nginx >= 1.5.9 ssl_stapling on; # Requires nginx >= 1.3.7 ssl_stapling_verify on; # Requires nginx => 1.3.7 ssl_dhparam /etc/letsencrypt/dhparam4096.pem; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 5s; add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; add_header X-Frame-Options DENY; […]

Nginx:将https://www.domain.tld/targetredirect到https://nocache.domain.tld/destination

我有一个Cloudflare / Nginx(v1.8.0)/ Apache服务器configuration与大量的caching。 目标是caching主域,但允许通过所有caching绕过的子域访问站点。 所以,我正在寻找一种将“ https://www.domain.tld/target ”redirect到“ https://nocache.domain.tld/destination ”的通用方式 与request_uri的简单位置匹配对于非www域变体已经足够了,但是如果请求通过www子域进入,就像许多网站一样,那么它会redirect到nocache.www.domain.tld存在。 我尝试了各种不同的方法来删除“www”。 子string,但似乎没有工作。 编辑 这是我的非工作Nginx的服务器configuration: server { listen 80 default_server; server_name localhost; set $PROXY_DOMAIN_OR_IP $host; if ( $request ~* ".*(www\.)(.*)\/target" ) { set $host_without_www $2; return 302 $scheme://nocache.${host_without_www}\/destination; }