Tag: nginx

Nginxconfiguration文件中的stringreplace

如何在Nginxconfiguration文件中混合使用variables和string? 我有一个如下所示的configuration文件: server { listen 80; server_name example.org; root /var/www/comet; index index.htm; default_type text/plain; location /publish { push_stream_publisher admin; set $push_stream_channel_id $arg_id; } location /sub { push_stream_subscriber long-polling; set $callback "${arg_callback}({\"id\":~id~,\"data\":~text~});"; push_stream_message_template $callback; set $push_stream_channels_path "/channel1"; } } 这是一个推送服务器,它应该推送消息到客户端,取决于他们传递给callback参数。 也就是说,如果用户请求http://example.org/sub?callback=call&id=blah并给他们发送消息,它应该读取call({"id":0, "data":"blah"}); 上面的代码输出文字variables名称 tangrs@~ $ curl "http://example.org/sub?id=woo&callback=call" -D – && echo HTTP/1.1 200 OK Server: nginx/1.0.11 […]

Django:带有WSGI的Nginx或带有WSGI的Apache

有没有比较nginx和Apache之间交付pythonnetworking应用(Django在我的情况下)的性能(RPS,CPU,内存使用等)的研究? 有人可以用事实帮助我吗? 你会推荐哪种组合?

nginx,多个域名,ssl支持没有SNI的客户端

我想要支持SSL的客户端,缺乏SNI的支持(IE / FF / Safari的赢得XP,Android <2.2和其他)。 我select的解决scheme是让nginx在单独的端口上监听每个证书。 问题是:有没有其他的方法来解决这个问题,还是我做得很好?

Nginx – PHP脚本的基本httpauthentication

我添加了一个用作“cgi-bin”的PHP脚本, 组态: location ~^/cgi-bin/.*\.(cgi|pl|py|rb) { gzip off; fastcgi_pass 127.0.0.1:9000; fastcgi_index cgi-bin.php; fastcgi_param SCRIPT_FILENAME /etc/nginx/cgi-bin.php; fastcgi_param SCRIPT_NAME /cgi-bin/cgi-bin.php; fastcgi_param X_SCRIPT_FILENAME /usr/lib/$fastcgi_script_name; fastcgi_param X_SCRIPT_NAME $fastcgi_script_name; 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 GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REMOTE_ADDR […]

使用NGINX安装SVN服务器

我正在尝试安装SVN服务器,并使用它与我的NGINXnetworking服务器。 我已经试过了 在nginx / sites-enabled / svn中的服务器部分,我已经添加了这个 位置/ var / svn / repos { proxy_pass http://127.0.0.1:81; #include /etc/nginx/proxy.conf; 设置$ dest $ http_destination; 如果($ http_destination〜“^ https://(。+)”){ 设置$ dest http:// $ 1; } proxy_set_header目标$ dest; } 而且我在端口81上运行apache,并且已经在apache上运行了100%的虚拟主机。 现在每当我尝试svn结帐,我得到这个: $ svn co http://svn.mysite.com/myrepo svn:服务器发送意外的返回值(500内部服务器错误),以响应“http://svn.mysite.com/myrepo”的OPTIONS请求 并在错误日志中,我有这个 2012/04/18 07:43:36 [error] 9914#0:* 106重写或内部redirect周期内部redirect到“/index.html”,客户端:93.95.201.250,服务器:mysite.com,请求:“ GET / myrepo HTTP / 1.1“,主机:”svn.mysite.com“ 有谁知道如何在nginx上安装svn服务器? 任何想法是高度赞赏? […]

没有负载平衡器的负载平衡?

我有4个nginx驱动的图像服务器在他们自己的子域,用户随机访问。 我决定把它们全部放在HAProxy负载均衡器的后面,以提高可靠性,并从一个地方查看stream量统计信息。 这似乎是一个简单的方法。 不幸的是,这个举动完全失败了,因为负载平衡器的100mbit端口已经完全满足了所有的请求。 我想知道该怎么做 – 我可以得到一个端口升级($$)或返回到随机访问的4个独立的映像服务器。 我想把HAProxy放在每个映像服务器上,如果服务器的nginx服务有问题的话,映像服务器又会路由到另一台映像服务器。 你会怎么做? 我想不必花太多额外的钱。

Nginx重写除索引外的所有html文件

我在Nginx重写中遇到了一些麻烦。 我最近被博客移动到一个新的引擎,并且URL结构已经改变。 在我的旧博客引擎post位于一个forms为http://$host/yyyy/mm/title.html的URL上,但在新的引擎上,它们的格式为http://$host/yyyy/mm/title/ 。 服务器返回的实际文件位于/yyyy/mm/title/index.html 。 为了确保旧post中的链接仍然有效,我想在Nginx中进行重写,如下所示: rewrite ^/(\d\d\d\d)/(\d\d)/(.+)\.html$ $scheme://$host/$1/$2/$3/ permanent; 不幸的是,这会捕获以.html结尾的任何内容,包括index.html ,因此访问forms为/(\d\d\d\d/)/(\d\d)/(.+)/的url会导致redirect循环(nginx内部尝试使用/$1/$2/$3/index.html ,redirect到/$1/$2/$3/ ,redirect到index.html等)。 如果可能,我宁愿不使用if语句。 有任何想法吗? 为了参考该网站是静态的,我的服务器configuration看起来像这样(这里没有什么奇特的): server { listen [::]:80; server_name blog.samwhited.com; root /var/www/blog.samwhited.com; charset utf-8; location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires max; log_not_found off; } error_page 404 /error/404.html; error_page 403 /error/403.html; location /error/ { internal; } } 以下是预期redirect行为的一个简单示例: http://blog.samwhited.com/2008/09/test.html – > http://blog.samwhited.com/2008/08/test/ 如果可以隐藏index.html,那也是很好的。 […]

处理反向代理configuration中的nginx错误

我使用nginx作为我现有的Web服务器上的反向代理。 我只想pipe理一组自定义错误页面,理想情况下在nginx内,因为这是最接近客户端的级别。 现在我可以使用error_pages和proxy_intercept_errors设置。 然而: 在400(错误请求)错误的情况下,我需要底层Web服务器能够通过一些JSON主体内容,详细说明为什么请求不好。 所以我需要一种proxy_intercept_errors 400个状态码禁用proxy_intercept_errors的方法。 对于任何状态码,我从不想显示默认的nginx错误页面。 现在从我所看到的,为了达到这个目的,我需要清楚地列出每个可能的状态代码,并且有一个错误页面呢? 例如,不要仅仅通配500以上的所有错误。 我的问题是 – 以上两个问题在nginx本身内是可以解决的吗? 如果没有,上述问题是否有明显的解决办法?

为nginx代理服务器强制使用特定的SSL协议

我正在开发一个远程https Web服务的应用程序。 在开发时,我需要从本地开发服务器(在ubuntu上运行nginx)到远程https web服务器的代理请求。 这里是相关的nginxconfiguration: server { server_name project.dev; listen 443; ssl on; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; location / { proxy_pass https://remote.server.com; proxy_set_header Host remote.server.com; proxy_redirect off; } } 问题是远程HTTPS服务器只能接受通过SSLv3的连接,如下面的openssl调用所示。 不工作: $ openssl s_client -connect remote.server.com:443 CONNECTED(00000003) 139849073899168:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:177: — no peer certificate available — No client certificate CA names sent — SSL […]

nginx将不会在文档根目录的子目录中提供error_page

这是我的nginxconfiguration的一个片段: server { error_page 500 /errors/500.html; } 当我在我的应用程序中导致500人时,Chrome只显示默认的500页(Firefox和Safari显示空白页),而不是我的自定义错误页面。 我知道该文件存在,因为我可以访问http://server/errors/500.html ,我看到了页面。 我也可以将文件移动到文档根目录并将configuration更改为: server { error_page 500 /500.html; } 而nginx正确地为页面提供服务,所以在服务器上似乎没有其他的configuration。 我也试过: server { error_page 500 $document_root/errors/500.html; } 和: server { error_page 500 http://$http_host/errors/500.html; } 和: server { error_page 500 /500.html; location = /500.html { root /path/to/errors/; } } 没有运气。 这是预期的行为? 错误页面是否必须存在于文档根目录,还是我错过了一些明显的东西? 更新1:这也失败了: server { error_page 500 /foo.html; […]

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器.