Articles of nginx

在服务器B(服务器B)上完成一项工作后,NGINX代理服务器能否将请求传递给(服务器A)?

目前,客户端正在将数据上传到旧的Web服务器,但我们希望客户端开始将数据上传到新的服务器。 但是,我们希望当前上传到旧的服务器继续,而新的上传通过新的服务器。 所有上传到旧服务器完成后,我们希望所有新的请求去新的服务器。 我想知道这是否可以用NGINX代理来完成? 代理也应该能够处理networking套接字。 可能的想法: 一个命令(或函数),将切换代理服务器,而不重新启动代理,并且是特定于连接。 configuration中的条件将告诉代理在旧服务器上完成作业后将请求传递到新服务器。

过滤Berkeley Research使用Logcheck扫描Nginx日志

我得到http://researchscan1.eecs.berkeley.edu/ (和其他人)的Nginx日志条目,请求中有很多特殊字符,我试图过滤出来。 例如: 2016/07/19 09:54:49 [error] 2006#2006: *5878 testing "//http" existence failed (2: No such file or directory) while logging request, client: 169.229.3.91, server: common.example.co.uk, request: "J/¤nkb=© 2]rµÐ['lç¢î/€@I"- 2016/07/19 11:29:05 [error] 2007#2007: *5945 testing "//http" existence failed (2: No such file or directory) while logging request, client: 169.229.3.91, server: common.example.co.uk, request: "i•jœ»@d‹˜þˆ¿–j•c|B‹¤¯Dñ½°|ôáV*Õ8ÓãÎð€í)ÑYCæôì £¶›¬Dxîoÿv.N" 我通常的Logcheck正则expression式为这种请求: ^[[:digit:]]{4}/[[:digit:]]{2}/[[:digit:]]{2} […]

echo_read_request_body不起作用。 如何loggingPOST请求正文(nginx)?

我需要loggingPOST数据。 我已经添加到我的configuration location / { echo_read_request_body; access_log /var/log/nginx/domains/site.post.log postdata; } 也join到http部分 log_format postdata '$time_local $request_body'; 但在我的日志中,我只能看到当地时间和短跑: 23/Jul/2016:16:07:49 +0000 – 有什么问题?

试图在NginX中不使用“if”,但是如何?

我读过, 如果是邪恶的,不应该在NginXconfiguration中使用。 但是,我怎么能重写我的代码,以便我不使用if? 我想要做的是:如果有一个特殊的请求“foobar.php”和一个叫做“magicargument”的特殊参数,NginX应该调用Redis而不是php。 当redis失败时,NginX proxy_passes到PHP。 它的工作,但只有当我使用如果! 这是configuration location ~ foobar.php$ { default_type application/json; error_page 404 = @redisfailed; if ($args = "") { return 404; } if ($arg_magicargument = false) { return 404; } set $redis_key $args; redis_pass 127.0.0.1:6379; } location @redisfailed { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; }

Nginx:将IP范围redirect到文件(如果存在)

我想redirect用户到一个maintenance.php文件,如果它存在,但不是我们的内部地址。 现在我通过if语句得到了这个工作,但是这些在位置块中被认为是邪恶的。 这是现在的configuration: if (-f $document_root/maintenance.php) { return 503; } error_page 503 @maintenance; location @maintenance { if ($ourips = 0) { rewrite ^(.*)$ /maintenance.php last; } if ($ourips = 1) { rewrite ^(.*)$ /app.php/$1 last; } } location / { # try to serve file directly, fallback to rewrite try_files $uri @rewriteapp; } location @rewriteapp […]

Nginx日志logging。 (使用mp4模块)

我有问题要了解使用mp4伪stream时Nginx访问日志中发生了什么。 我遇到的问题是,当我访问服务器上的mp4文件时,Nginx仍然不会在日志文件中写入任何内容。 我的猜测是因为这个文件没有被传送到最后。 一旦我停止video或快进,或只是closures浏览器日志正在写入,但与当前的时间戳,而不是实际访问video的时间。 除了Ubuntu 16.04上的“标准”configuration,只有MP4模块被激活。 实际上如何才能实现对video文件的访问?

阻止Nginx中的多个站点的坏机器人

我需要阻止一大堆机器人抓取运行在Ubuntu 16.04机器上的Nginx Web服务器上的几百个站点。 我在这里find了一个相当简单的例子(代码的重要部分在下面),但似乎这个function只能在服务器块内部使用(因为IF语句),我认为这是一个可怕的想法,特别是机器上有大量的网站。 if ($http_user_agent ~* (ahrefs|wget|crawler|majestic) ) { return 403; } 所以,问题是可以从主要的nginx.conf文件中实现类似的function,并且可以用于当前在sites-enabled文件夹中定义的所有域以及将来添加的域? 我也读过关于地图的方法,并在GitHub上find了一个使用它的整个项目 – https://github.com/mariusv/nginx-badbot-blocker,但是它仍然需要编辑sites-enabled了sites-enabled文件夹中的所有文件而这将花费太多时间用于几百个已经运行的网站。

Nginx突然停止工作,我找不到原因

我有一个复杂的问题,我不知道如何debugging。 在我的prod服务器,我有一个nginx编译从页面速度来源。 一切正常,但有时,我不能识别模式,nginx停止工作,没有任何错误日志中的错误。 error_log /usr/local/nginx/localhost-error.log; 如果我做HTOP我找不到任何与nginx相关的pid,所以我需要每次手动启动nginx我有这个问题。 nohup /usr/local/nginx/sbin/nginx & 否则,nginx工作正常。 我不知道是否重要,但是有时候我会接受基本authentication的powershell攻击,但是我经过3次错误的尝试后却不能使用。 我怎样才能find这个问题的原因? nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful nginx version: nginx/1.10.1

如何使用密码保护弹性beanstalk docker nginx中的网站

我有一个Django Web应用程序托pipe在AWS Elastic Beanstalk与Docker和Nginx中。 我正在使用主pipe来启动nginx和uwsgi。 需要使用密码保护网站。 我试过使用.htaccess 。 htpasswd -cb /etc/nginx/.htpasswd admin admin 并添加了nginxconfiguration location / { auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; uwsgi_pass unix:/var/sockets/api.sock; include /home/docker/uwsgi_params; } 它的工作,但它反复询问密码。 通常htaccess只会在会话中要求密码一次。 但是每次我们点击一​​个字段或button,都会要求input用户名和密码。 有什么办法可以解决吗?

dyndns主机之间的负载均衡器

我有 连接到Internet的两台路由器,知道他们的地址我使用DynDNS服务 一个地址,例如:www.company.com, 路由器使用NAT来连接不同主机(LAN)上的应用程序。 在每台主机的Nginx服务器上 我想,当有人试图连接到www.company.com地址的请求被redirect到路由器的地址和端口工作量较less或活动连接。 我需要雇用或安装哪些服务来实现它?