我们最近有nginx本身的500多个,不知何故没有logging(我们有截图,但没有在日志中)。 这本身很奇怪,因为通常会出现错误。 无论如何,我想知道是否有像连接池的大小,如果最多会导致500? 我们已经把它与最近的交通高峰相关联起来了,但这不是确定性的。 任何人有任何想法如何开始处理这样的问题?
我正在尝试打印用于开发/debugging目的的响应数据。 我找不到类似的问题或任何信息。 如果你这样做,请添加评论。
在Apache上,您可以使用ProxyPass除了一个或多个子目录(使用“!”)。 ProxyPass /subdir ! ProxyPass / http://localhost:9999/ 什么是Nginx的等价物? 我的第一个猜测显然不起作用: location /subdir { root /var/www/site/subdir; } location / { proxy_pass http://localhost:9999/ ; }
我将Nginx 1.2.4与PHP-FPM 5.4.8结合使用,并使用fastcgi pass来尝试将自定义parameter passing给PHP 。 以下是我迄今为止发现的选项: 使用env指令在nginx设置一个环境variables,并从PHP获取getenv()或$_ENV 。 问题是env只在main上下文中运行,而我需要在server上下文中设置参数。 使用fastcgi_param指令为它devise的。 我试过用fastcgi_param改变一些参数的值,但是不成功: nginx的: fastcgi_param PATH_INFO "/var/tmp"; PHP: 我检查了所有可以find的预定义数组: echo '<pre>'; echo "\n".'$GLOBALS'."\n"; var_dump($GLOBALS); echo "\n".'$_SERVER'."\n"; var_dump($_SERVER); echo "\n".'$_GET'."\n"; var_dump($_GET); echo "\n".'$_POST'."\n"; var_dump($_POST); echo "\n".'$_FILES'."\n"; var_dump($_FILES); echo "\n".'$_REQUEST'."\n"; var_dump($_REQUEST); echo "\n".'$_SESSION'."\n"; var_dump($_SESSION); echo "\n".'$_ENV'."\n"; var_dump($_ENV); echo "\n".'$_COOKIE'."\n"; var_dump($_COOKIE); echo "\n".'$php_errormsg'."\n"; var_dump($php_errormsg); echo "\n".'$HTTP_RAW_POST_DATA'."\n"; var_dump($HTTP_RAW_POST_DATA); echo "\n".'$http_response_header'."\n"; […]
有了这个configuration: server { listen 8080; location / { if ($http_cookie ~* "mycookie") { proxy_set_header X-Request $request; proxy_pass http://localhost:8081; } } } 我在重新加载nginx服务时出现此错误: Reloading nginx configuration: nginx: [emerg] "proxy_set_header" directive is not allowed here in /etc/nginx/conf.d/check_cookie.conf:5 nginx: configuration file /etc/nginx/nginx.conf test failed 这个configuration工作正常,但它没有做我想要的: server { listen 8080; location / { proxy_set_header X-Request $request; if ($http_cookie ~* […]
好吧,一个示例url http://www.mysite.com/?p=account&view=settings 普里是一个常数。 所有的url都有。 该view是许多可选的uri之一。 我试图了解URL重写和正则expression式,但我只是没有得到它。 我需要回到编写代码,但不幸的是,我只是不断回到nginx.conf ,以获得更多的惩罚。 我的目标是重写url为: http://www.mysite.com/account/view/settings 我会告诉你我尝试过的东西,但是它只是复制和粘贴了很多以前的例子,certificate了我正在掌握正则expression式和URL重写的概念。 如果有人可以花几分钟来解释正则expression式部分,或者链接到一个很好的教程了解它,我将不胜感激。 不,我不指望你为我做这个工作,但是我虚心地请求一点帮助,把握重写的概念以及在nginx conf中使用的variables。 我可以看到一个叫做$uri ,但是不知道它是什么意思。 我还需要添加一个正则expression式来拒绝在/socket和/private的PHP脚本的直接访问,但允许通过Ajax的访问。 我敢肯定,我可以将任何有关正则expression式的知识应用于这个任务。 我的nginx conf的位置块 location ~ \.(hh|php)$ { fastcgi_keep_conn on; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~* .(png|gif|ico|css|js)$ { expires 365d; } location ~ .(aspx|jsp|cgi)$ { return 410; } location /socket { return 405; […]
在CentOS 6.5上运行nginx 1.0.15 。 我有三个上游服务器,一切正常,但是当我模拟一个中断,并采取上游服务器之一,我注意到相当滞后的响应时间(额外的5-7秒)。 第二个我把服务器重新联机,延迟消失。 另外,我注意到另一个奇怪的事情,如果我简单地停止模拟中断服务器上的httpd服务,响应时间是正常的,只有服务器完全closures才会发生滞后。 这是我的conf: upstream prod_example_com { server app-a-1:51000; server app-a-2:51000; server app-a-3:51000; } server { # link: http://wiki.nginx.org/MailCoreModule#server_name server_name example.com www.example.com *.example.com; #—– # Upstream logic #—– set $upstream_type prod_example_com; #—– include include.d/common.conf; # Configure logging access_log /var/log/nginx/example/access/access.log access; error_log /var/log/nginx/example/error.log error; location / { # link: http://wiki.nginx.org/HttpProxyModule#proxy_pass proxy_pass http://$upstream_type$request_uri; […]
我们正在使用客户端证书来validation我们的客户之一。 我们的设置是这样的:我们有一个Django应用程序前面的nginx。 在我们的nginxconfiguration中,我们有必要的参数来获得实际的客户端证书validation( ssl_client_certificate , ssl_verify_client等)和 uwsgi_param X-Client-Verify $ssl_client_verify; uwsgi_param X-Client-DN $ssl_client_s_dn; uwsgi_param X-SSL-Issuer $ssl_client_i_dn; 这意味着我们将这些variables的值传入我们的Django应用程序。 Django应用程序然后使用这些信息来确定哪个用户正在连接并授权他们。 我们已经成功地使用了几个月,没有任何问题,突然间我们开始收到关于人们无法使用证书login的报告。 事实certificate, $ssl_client_s_dn和$ssl_client_i_dn值的格式已经从斜线分隔的格式改变了: /C=SE/O=Some organziation/CN=Some CA 以逗号分隔的格式: CN=Some CA,O=Some organization,C=SE 解决这个问题很简单,但我不明白为什么。 所以我的问题是: $ssl_client_s_dn的值从哪里来? 它是由nginx设置的吗? 客户端? 有没有这个值的格式的文件/规范,它有一个名字?
我正在设置nginx来提供Mercurial存储库。 它在不使用基本身份validation的时候,或者当我使用基本身份validation的时候都可以工作。 我想要做的就是对POST请求使用基本的身份validation,所以任何人都可以访问,但只有经过身份validation的用户才能进行访问。 我尝试了以下, if ($request_method = POST) { auth_basic "Restricted"; auth_basic_user_file /path/to/userfile } 但它抱怨“auth_basic指令不允许在这里”。 我该如何解决这个问题?
在我的nginx 0.8.34安装程序中,我使用X-Accel-Redirectfunction来控制应用程序代码中的文件下载,而没有应用程序处理下载本身。 经过很多痛苦,现在基本上工作,除了nginx总是返回带有text/html内容types的文件。 默认的内容types是http块中指定的application / octet-stream。 除了别的以外,服务器块还包含存储文件的目录的定义: location /files { default_type application/octet-stream; alias /srv/www/uploads; internal; } 所以我甚至在这里指定了内容types,但没有任何改变。 我不想通过应用程序来设置Content-Type,因为那样我会减慢我的速度(我首先必须确定它)。 所以理想情况下,nginx会根据文件扩展名返回正确的mimetype(我在http块中包含了mime.types)。