Articles of nginx

在多个服务器上部署PHP的最佳实践

我目前正在我的服务器上部署一些PHP Zend应用程序,这是目前我得到的。 第一层 – 负载平衡器+ Httpcaching。 第二层 – networking服务器(在这里将有更多的networking服务器,这就是为什么负载平衡器)。 第三层 – MySql(将有复制,奴隶主,也许分裂每个客户或一群客户)。 问题是,目前我在networking服务器上运行nginx + php-fpm,所有的php代码都保留在用户各自的home文件夹中。 当时间过去了,我想增加服务器的数量,php-fpm和nginx实例。 我应该把php放在哪里,因为我不能在服务器之间复制它,否则更新会影响一致性;) 我想可能是一个NFS将持有所有的PHP代码,服务器将指向这一点。 这里的正确方法是什么? 我对服务器体系结构很陌生。 感谢你的帮助。 罗德里戈

重启spawn-fcgi

我怎么能重新启动nginx服务器上的spawn-fcgi?

如何让Nginx支持HTTP OPTIONS方法

我有一个Nginx服务器,当客户端使用HTTP OPTIONS方法时,它返回一个403。 这听起来像Nginx不支持OPTIONS方法,但我无法在Interwebs上find确凿的证据。 现在Nginx运行在Centos5上。 是不是真的Nginx不支持这个,是否有一个模块可以启用Nginx的支持选项? 谢谢。

Nginx负载均衡与专用的php-fpm服务器

我用nginx + php-fpm和mysql获得服务器设置。 我有另一台服务器只有安装的PHP-FPM,所以想用作负载平衡。 但是,当我用php-fpm作为负载平衡器使用这个专用的服务器时,打开页面时出现错误:“拒绝访问”。 /etc/nginx/nginx.conf user www-data; worker_processes 3; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 64; access_log /var/log/nginx/access.log; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay on; #gzip on; upstream php { server dedicatedserverip:9000; } include /etc/nginx/sites-enabled/*; } /etc/nginx/sites-enabled/site.org.conf server { listen 81; […]

如何在nginx中为单个文件创build位置块,但除了它自己之外,是否遵循另一个位置块的规则?

我有一个位置块/做所有我的fastcgi的东西,它有一个10秒的正常超时。 我希望能够对某些文件(/ admin,sitemap.xml)有不同的超时时间。 有没有简单的方法来做到这一点,而不是复制每个位置的整个位置块? location /admin{ fastcgi_read_timeout 5m; #also use the location info below. } location /sitemap.xml{ fastcgi_read_timeout 5m; #also use the location info below. } location / { fastcgi_pass 127.0.0.1:8014; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param QUERY_STRING $query_string; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_pass_header Authorization; fastcgi_intercept_errors off; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT […]

反向代理从nginx到Apache的HTTPS

我有nginx作为一个Apache服务器的反向代理工作。 每个Apache服务器都坐在自己的虚拟容器中,以便彼此分离事物(因此,nginx反向代理不会进行负载平衡,只是将请求转发到适当的容器:站点A转到192.168.2.1,站点B转到192.168.2.2等)。 这里处理SSL的最好方法是什么? 从我可以谷歌,典型的方式似乎是在反向代理解密SSLstream量,然后将stream量作为正常的HTTP转发到代理服务器后面的服务器。 我并不太热衷于此,因为这意味着在代理服务器上安装证书,而不是在其后面的服务器上安装证书 – 而且如果可能的话,我想保留与它们相关的容器的证书。 但是,HTTPSstream量显然是encryption的,那么甚至有可能代理呢? 我猜不是,因为我没有遇到过很多“如何做”的东西,但是我觉得我会问一下蜂巢的思维。 任何指针将不胜感激:)

Nginx的。 通配符别名的位置。 可能吗?

使用http://wiki.nginx.org/NginxHttpCoreModule#alias有关如何使用子目录别名的示例,我注意到它没有提及如何dynamic地执行它。 在下面的例子中… location ~ ^/download/(.*)$ { alias /home/website/files/$1; } …“/download/book.pdf”请求将返回文件“/home/website/files/book.pdf”。 再次注意,位置之后只有部分请求URI附加到由别名定义的path。 如果我正在创build一个标有用户名称的文件夹,那么这个文件夹名称将永远是唯一的,不同的。 如何在上面的示例中更改正则expression式,以便单词下载也成为通配符子目录? location ~ ^/randomusername/(.*)$ { alias /home/website/profiles/randomusername/$1; }

用Munin监控Nginx虚拟主机

我已经成立了穆宁,并且非常喜欢它。 我得到了一些基本的Nginx监控设置,并能够监控Nginx的状态和内存使用情况(stub_status编译成Nginx并在configuration中激活)。 不过,在我的冒险中,让Munin和Nginx成立了这个工作,我find了nginx_traffic的Munin插件。 我在Munin中启用了它,就像我为nginx_status和nginx_request所做的那样,但是我的虚拟主机通信图仍然是空白的。 munin-node-configure –suggest –suggest显示nginx_request和nginx_status被激活和推荐,但不显示任何其他的nginx_ *插件(尽pipe我有nginx_memory,并且它成功地绘制graphics)。 至less有人能指出我正确的方向来设置这个插件吗? 我很乐意能够使用它。

负载平衡:Nginx,Varnish和HTTP会话

我必须build立一个负载均衡系统。 目前我有两台机器运行Nginx 0.8.52,PHP-FPM(在unix套接字上)和一个基于PHP Symfony 1.4.11的应用程序。 在第三台机器上,我必须select一个平衡器来安装。 我已经使用Varnish进行静态文件caching,但是我不知道Varnish负载平衡是否可以处理Symfony PHP会话。 另一种select是使用ip_hash进行Nginx负载平衡。 哪一个是最好的? 提前致谢

如何使用通过Java keytool与Nginx生成的SSL证书?

我使用Java keytool来生成一个“keystore”: keytool -genkey -alias example.com -keyalg RSA -keystore example.com.keystore 然后我生成了一个CSR(证书签名请求): keytool -certreq -keyalg RSA -alias example.com -file example.com.csr -keystore example.com.keystore 然后我颁发了一个证书,并将其保存在一个文本文件example.com.crt 现在我想用Nginx的这个证书。 我已将证书放在/etc/ssl/certs/example.com.cert并在/etc/ssl/certs/example.com.cert放置了我的“密钥库”(我认为它包含我的私钥?) 然后我configuration了Nginx, Nginx,SSL和vhosts 。 但是当我重新加载Nginx的configuration文件,我得到这个错误消息: sudo service nginx reload Reloading nginx configuration: [emerg]: SSL_CTX_use_certificate_chain_file("/etc/ssl/certs/myssl.crt") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib) configuration file /etc/nginx/nginx.conf test failed 当我遵循相同的指南,并使用openssl生成SSL证书,它工作正常。 但使用Java的keytool我得到这个错误。 我如何使用Nginx的Java密钥工具使用SSL证书和密钥?