Articles of nginx

nginx – >使用基于cookie的try_files服务不同的文件(条件,如果,然后,其他)

我需要configuration一个nginx服务器,以便:如果用户有一个特定的cookie,所以服务器必须发送一个文件,否则服务器必须发送另一个。 我读了很多相关的文章,但没有什么帮助,也知道当try_files遇见的location if有一些问题,但如何解决这个问题… 我有一个例子,应该是有效的,但事实上并非如此: upstream site { server localhost:4321; } server { listen *:1234; server_name site.com; root /path/www/; ssl on; ssl_certificate /path/ssl.crt; ssl_certificate_key /path/ssl.key; location = / { set $variable /path/index.html; if ($http_cookie ~* "someCookie=someValue(?:;|$)") { set $index_file /path2/index.html; } rewrite .* $index_file break; try_files $uri/index.html $uri.html $uri @site; } }

尝试运行任何命令时,PHP exec()返回127

我是转换到FreeBSD(10)的中级Linux用户(CentOS,一些Debian)。 权限总是让我感到困惑。 我已经build立了一个PHP-FPM(5.6)和Nginx(1.8.0)的服务器。 他们作为'www'用户运行。 我尝试从浏览器中运行任何命令,例如'whoami','uname -a','php'或'/ usr / local / bin / php / usr / local / www / nginx / feeds /news_feed.php'全部返回127错误代码。 我已经挫折了我的大脑谷歌search几个小时,我有一种感觉,这是由于权限。 唯一的问题是大多数线程都与Linux相关,大多数线程都将其标记为已解决,而不解释实际上是错误的。 那么,如何才能知道我的networking服务器的path是什么,如何修复它,以及如何正确设置权限而不会使系统变得脆弱? 我明白这可能是由devise或与监狱有关,但必须有办法运行exec()或类似的命令?

如何在nginx中设置向前保密,以便具有默认ATS设置的iOS9(Xcode7)应用程序可以连接到我的服务器?

iOS9的应用程序传输安全性指出,不符合特定要求的连接将失败。 以下是Apple的文档( https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html )引用的要求。 服务器必须至less支持传输层安全性(TLS)协议版本1.2。 连接密码仅限于提供前向保密的密码(请参阅下面的密码列表)。 证书必须使用SHA256或更大的签名散列algorithm进行签名,并使用2048位或更大的RSA密钥或者256位或更大的椭圆曲线(ECC)密钥。 我已经检查过我的服务器确实正在使用带有2048位RSA密钥的证书,并使用SHA256哈希algorithm进行签名。 无论如何,我的Xcode7构build的应用程序无法连接到我的服务器的默认ATS设置。 但是,在应用程序的Info.plist中将NSExceptionRequiresForwardSecrecy设置为NO后,连接成功。 所以看起来我的服务器没有正确configuration正向保密密码。 以下是我在nginx.conf中的当前设置: ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; 我的证书由Comodo发布,我上面使用的设置也来自Comodo的支持文档( https://support.comodo.com/index.php?/Default/Knowledgebase/Article/View/789/37/certificate-installation- nginx )。 根据苹果的文件,在默认的ATS设置下,可接受的密码包括: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (似乎我的nginx的ssl_ciphers设置有这些密码。) 如果NSExceptionRequiresForwardSecrecy在应用程序的设置中设置为NO ,那么下面的密码也将被接受: LS_RSA_WITH_AES_256_GCM_SHA384 TLS_RSA_WITH_AES_128_GCM_SHA256 TLS_RSA_WITH_AES_256_CBC_SHA256 TLS_RSA_WITH_AES_256_CBC_SHA TLS_RSA_WITH_AES_128_CBC_SHA256 TLS_RSA_WITH_AES_128_CBC_SHA 有了这个设置为NO ,我的应用程序成功连接到我的服务器,虽然原因仍然不知道我。 所以我的问题是,我应该如何设置nginx的前向保密密码,以便具有默认ATS设置的iOS9(Xcode7)应用程序可以连接成功? 更新: 我按照https://weakdh.org/sysadmin.html中的指导重新configuration了我的服务器。 我使用以下命令重新生成一个新的DH组: openssl dhparam -out dhparams.pem […]

清漆删除$ HTTP_HOST

我有一个问题与清漆,这将删除HTTP_HOSTvariables。 我的设置是nginx – >(1从5服务器:) varnish – >本地nginx – > php5-fpm。 我正在运行几个网站,但没有Host只是显示默认网站。 /etc/varnish/default.vcl # This is a basic VCL configuration file for varnish. See the vcl(7) # man page for details on VCL syntax and semantics. # # Default backend definition. Set this to point to your content # server. # backend default { .host = […]

每个php-fpm池进程每个250MB

我的Centos 6.7服务器只有我的基于php和mysql的低stream量网站(所有网站每天总共约3000页的浏览量)使用nginx web服务器和virtualmin(没有wordpress或外部脚本/软件)。 我安装了PHP: yum –enablerepo=remi,remi-php56 install -y php-mysqlnd php-gd php-fpm yum安装了像php-commom,php-pdo等的依赖关系 我使用virtualmin在服务器上检查了正在运行的进程。 重新启动php-fpm之后,每个php-fpm:pool www进程都使用了大约400MB的内存。 etc / php.d目录中有20多个扩展名。 我评论了etc / php.d目录中的大部分扩展。 重新启动php-fpm和nginx之后, 我检查使用安装的扩展 <?php print_r(get_loaded_extensions()); ?> 这是结果: [0] => Core [1] => date [2] => ereg [3] => libxml [4] => openssl [5] => pcre [6] => zlib [7] => filter [8] => hash [9] […]

Lua调味的Nginx重写或内部redirect周期

我对nginx和lua都是新的。 我试图按照这个教程http://leafo.net/posts/creating_an_image_server.html#installation_requirements,但对于我的生活,我不能得到nginx.conf权利。 我已经检查了类似于这个问题的location其他问题,但我看不出我的代码有什么问题。 这里是nginx.conf : error_log stderr notice; daemon off; events { } http { include /usr/local/openresty/nginx/conf/mime.types; server { listen 6789; lua_code_cache on; location @image_server { content_by_lua_file "serve_image.lua"; } location ~ ^/images/(?<size>[^/]+)/(?<path>.*\.(?<ext>[a-z_]*))$ { root cache; try_files /$path @image_server; } } } 这是serve_image.lua代码 local sig, size, path, ext = ngx.var.sig,ngx.var.size,ngx.var.path,ngx.var.ext local images_dir =“images /” – 其中图片来自本地cache_dir […]

php5-fpm连接超时/连接被拒绝

我们有一个约20000个网页浏览/每天的网页。 这个网页通常使用〜15-20 php5-fpm的孩子,但有时达到最多的孩子,该网站约15分钟将无法使用。 (150)高峰时间并不一定发生。 和php5-fpm / nginx重新启动没有帮助,当我重新启动php5-fpm时,它立即达到最大的孩子数量。 这是我的configuration文件: https : //drive.google.com/folderview?id=0BxIEpo_vWLGZeFVZUXBMRTA3QXc&usp=sharing 我不知道如何find导致它的原因。 我该怎么办才能解决这个问题?

带有Chrome的Nginx:400错误的请求(spdy头部块的提前结束)

我发现,可能服务器的日志有很多HTTP 400的错误请求,源自使用Chrome浏览器的客户端,具有类似DOS的快速间隔。 (每秒40-50个请求) [16/Oct/2015:12:57:02 +0200] "-" 400 0 "-" "-" 在Nginx中启用信息日志logging: client sent SYN_STREAM frame for stream 7 with invalid header block while processing SPDY, client: xx.xx.xx.xx, server: 0.0.0.0:443 debugging模式logging: http uri: "/" http args: "" http exten: "" premature end of spdy header block spdy send RST_STREAM sid:51 st:1 spdy close stream 51, queued […]

如何configurationnginx使用两个位置的特定条件

我有两个地点: location ~ ^/[^/]+/[^/]+/reg/.*$ { dav_methods DELETE MOVE; … } location ~ ^/[^/]+/[^/]+/.*$ { dav_methods PUT DELETE MKCOL MOVE PROPFIND; … } 基本上,第一个应该对/ reg /目录下的MOVE和DELETE请求做一些事情(只读),第二个应该对所有文件(包括/ reg /目录中的所有文件)的所有请求做一些事情。 问题是,我需要为所有请求/文件(包括MOVE和DELETE请求以及来自/ reg /目录的文件)完成2个工作。 我怎样才能做到这一点? 我试图从第二个位置复制代码到第一个,但是忽略PUT,MCKOL和PROPFIND请求。 我也试图使用if(是的,我知道,如果是邪恶的,但我绝望): location ~ ^/[^/]+/[^/]+/reg/.*$ { if ($request_method ~* MOVE) { …-from-loc-1 } …-from-loc-2 } 但是… from-loc-2处理方式不正确。 那么,有什么想法?

无法将客户端上的库与SSL同步,卡住“连接到服务器”

我有我们的海文件服务器上configurationSSL的工作,我是一个初学者与Linux /证书。 我们有一个来自GoDaddy的通配符证书,并且需要转换crt和密钥扩展,我configuration了default.conf来设置适当的configuration,如下所示: # # The default server # server { listen 80; server_name ***.*******.com; } server { listen 12443; ssl on; ssl_certificate /etc/pki/tls/certs/*****.crt; ssl_certificate_key /etc/pki/tls/certs/*****.key; server_name ***.*******.com; location / { fastcgi_pass 127.0.0.1:8000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param […]