Articles of nginx

nginx proxy_pass POST 404错误

我有nginx代理到一个应用程序服务器,具有以下configuration: location /app/ { # send to app server without the /app qualifier rewrite /app/(.*)$ /$1 break; proxy_set_header Host $http_host; proxy_pass http://localhost:9001; proxy_redirect http://localhost:9001 http://localhost:9000; } 对/ app的任何请求都会转到:9001,而默认网站托pipe在:9000。 GET请求正常工作。 但是每当我提交一个POST请求到/ app / any / post / url,它会导致一个404错误。 通过GET / app / any / post / url直接在浏览器中直接点击url,按预期的方式点击app服务器。 我在网上find了类似问题的其他人,并添加了 proxy_set_header Host $http_host; 但这并没有解决我的问题。 没有logging错误,访问日志如下: # For http://localhost:9000 […]

客户没有完成从NGINX下载大文件 – networking问题?

我们在千兆networking上安装了一个四核i7,8G机器。 有4个WiFi接入点,我们连接50个iPad,其中有一个应用程序从服务器上下载文件。 服务器运行的NGINX位置在服务器上的一个文件夹。 该文件夹有一个190MB大的文件。 我们testing了3台iPad。 下载时间约为1分10秒,即2.7Mbps。 然后,我们开始下载文件并发,就像我们在50个iPad上一样。 我们看到20台iPad失败,30台成功。 在NGINX访问日志中,我们看到30 200 OK,整个字节数为190MB,20字节数在80MB左右。 在testing中,我在上面跑。 我注意到eth0在任何时候都不超过6%。 CPU使用率<1%,内存为5GB免费不动。 NGINX进程有时在进程列表的顶部,但大部分时间不是。 由RAM,然后CPU的顺序。 si的高度是1900K,90Mbps。 我不知道如何debugging这个问题。 我们的networking团队今天进来,但我想能够告诉他们一些有用的东西。 理想情况下 – 这不是服务器。 我不认为这是服务器给予阅读顶部。 我将不胜感激其他方式来debugging这种问题,访问日志清楚地显示客户端没有完成下载。 如果那些失败达到了80MB,那么连接和下载并没有成功的问题呢? 大约80MB的东西被打断了? 看起来有趣的是,很多失败都在同一个标​​记(有些没有)。 这是否表明networking昙花一现? 服务器本身是否可以因为任何原因决定不继续履行现有的连接? 谢谢

同步多个nginx服务器的caching

我有一个与Nginx的主caching服务器。 它的设置与proxy_pass和proxy_cache。 但是我想在其他位置添加更多的nginxcaching服务器,这些位置都与主caching服务器包含相同的内容。 所以这不关心我发送请求的服务器。 是否有可能rsync跨所有服务器的caching目录?

Nginx – 从深层目录结构中提供静态内容

为了避免在一个文件夹中有太多的文件,我必须存储相当多的图像(比如1M),所以我打算把它们分解成与文件名相关的文件夹,例如: /images/1/5/3/153.png (我意识到有办法实现更均匀的分配,但我认为这将足以满足我们的需求) 但是,我希望这些可以从没有目录结构的URL访问,即: /images/153.png 这是否有可能在Nginx中完成,例如URL重写?

nginx – redirect特定的页面path到https,同时保持所有其他的http(在一个服务器调用)?

从我到目前为止所收集的内容来看,清楚的是,如果在nginx中运行if语句应该不惜一切代价来避免。 到目前为止,我发现的关于特定页面redirect的大多数示例都涉及多个正在使用的服务器。 但是,这不是有点浪费吗? 我不确定,但是我认为在负载很重的情况下,多台服务器来完成这个要比单台服务器慢一些。 我目前的服务器调用是这样的: server { listen 10.0.0.60:80; listen 10.0.0.60:443 default ssl; #other code } 我想要做的是将某些http请求redirect到https请求。 例如,我希望/ login /和/ my-account /始终被迫使用SSL。 如果你在/帮助/虽然,我想通过默认的http服务。 有一种方法可以在单个服务器调用中完成此操作吗? 或者是否有没有缺点使用2服务器调用来实现这个工作? nginx似乎处于非常活跃的开发之中,而我所遵循的很多老版本的指南都是在你不能在同一个服务器调用中监听端口80和443的请求的时候发生的。 但是,现在nginx已经更新,以支持(我正在运行1.2.4),我想知道是否有一个“最佳做法”的方式来处理今天。 任何帮助将不胜感激。 编辑: 我find了这个指南: http : //redant.com.au/blog/manage-ssl-redirection-in-nginx-using-maps-and-save-the-universe/ 我更新了我的代码,如下所示: map $uri $my_preferred_proto { default "http"; ~^/#/user/login "https"; } server { listen 10.0.0.60:80; ## listen for ipv4; this line is default […]

NGinx – PHP / CGI – 没有指定input文件

我知道这是一个普遍的问题。 我GOOGLEsearch了很多,但仍然无法正常工作。 从浏览器调用PHP文件时,“没有指定input文件”。 我在一台新的debian机器上安装了nginx php / cgi。 Nginxconfiguration – # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/webroot$fastcgi_script_name; include /etc/nginx/fastcgi_params; } / usr / bin / php-fastcgi看起来像这样 – #!/bin/bash FASTCGI_USER=www-data FASTCGI_GROUP=www-data ADDRESS=127.0.0.1 PORT=9000 PIDFILE=/var/run/php-fastcgi/php-fastcgi.pid CHILDREN=3 PHP5=/usr/bin/php5-cgi /usr/bin/spawn-fcgi -a $ADDRESS -p $PORT […]

Nginx反向代理apache2 CPU负载过高

我的服务器:2x Intel Xeon 5506 2.13GHz 24 GB DDR3 RAM Debian 5.0.8 64位 我的服务器CPU占用了600个用户的90%,每秒大约有6个页面浏览量。 服务器上有2个站点。 一个低访客论坛和一个Wordpress页面。 我的Apacheconfiguration: MaxKeepAliveRequests 100 KeepAliveTimeout 15 ServerLimit 500 <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 250 MaxRequestsPerChild 1000 </IfModule> <IfModule mpm_worker_module> StartServers 2 MaxClients 250 MinSpareThreads 25 MaxSpareThreads 150 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule> <IfModule mpm_worker_module> StartServers 2 MaxClients […]

nginx不尊重“root”指令

我正在用Ubuntu运行一个EC2实例,并试图为两个域名安装虚拟服务器,但没有运气,也找不到原因。 我的web文档位于/var/www/<domain> , www文件夹下的所有内容都属于www-data:www-data (目前只有两个index.htmls)。 我已经将站点configuration文件放在/etc/nginx/sites-available ,并将它们链接到sites-enabled了sites-enabled 。 网站configuration文件和符号链接也属于www-data:www-data以防万一。 我还将我的域名与服务器的公共IP地址添加到/etc/hosts ,当然在EC2控制台中启用了端口80。 这里是/etc/nginx/nginx.conf : user www-data www-data; worker_processes 4; pid /var/run/nginx.pid; events { worker_connections 16; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log debug; gzip on; gzip_disable "msie6"; include /etc/nginx/sites-enabled/*; } 而其中一个网站的configuration(另一个不同的域名): server […]

nginxconfiguration错误 – PHP文件下载

当试图解决一个不同的问题,并清理我的configuration文件,我已经造成了一个问题。 我有2个域绑定到一个网站,但现在,每当我访问domain1,它下载的PHP文件作为“下载”,而不是执行它在PHP-FPM。 如果我浏览到域2然而,文件得到执行。 奇怪的是,它们都在同一个configuration文件中定义。 我必须改变一些以前的工作,但最近停了下来。 我的网站的configuration文件是这样的(它们包含在默认的nginx.conf文件中): server { listen 80; server_name site1.domain.co.uk site2.domain.co.uk; root /var/www/php/hobnobs; # access_log /var/log/nginx/site-access.log; # error_log /var/log/nginx/site-error.log; location / { index index.html index.php; try_files $uri $uri/ /index.php; } location ~ \.php$ { try_files $uri /index.php; fastcgi_pass php; include fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location /common { alias /var/www/common; […]

Samba共享不能被PHP-FPM使用?

我有一个PHP-FPM和nginx安装程序,已经在Ubuntu Desktop 12.04上完美运行。 networking服务器的文件由一个名为/www的目录提供,该目录被设置为服务器的root 。 最初, /www被挂载为VMware共享文件夹(因为Ubuntu Desktop作为guest OS运行)。 但是,由于共享文件夹的性能问题(看到2秒的延迟!),我testing了samba共享。 我有一个名为webfiles的文件夹在我的Windows 7主机上共享为networking共享。 我可以通过在我的fstab中将它挂载为cif来将它自动挂载到/www : //192.168.1.7/webfiles /www cifs credentials=/home/user/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0 /www挂载罚款启动,我可以在Ubuntu上创build和删除它的文件。 Nginx也可以从中提供静态文件,没有任何问题。 问题是,一旦我希望它通过PHP-FPM服务器PHP文件,我开始得到File not found. 错误。 尽pipe这个设置完全可以工作,唯一改变的是,而不是在/www上安装共享文件夹,我现在有一个samba共享。 我对桑巴不是很熟悉,但是可能会造成这种情况呢?