我遇到了一个奇怪的问题与nginx和它如何评估条件。 这里是相关的configuration: set $cors FALSE; if ($http_origin ~* (http://example.com|http://dev.example.com:8000|http://dev2.example.com)) { set $cors TRUE; } if ($request_method = 'OPTIONS') { set $cors $cors$request_method; } if ($cors = 'TRUE') { add_header 'Access-Test' "$cors"; add_header 'Access-Control-Allow-Origin' "$http_origin"; add_header 'Access-Control-Allow-Methods' 'POST, OPTIONS'; add_header 'Access-Control-Max-Age' '1728000'; } if ($cors = 'TRUEOPTIONS') { add_header 'Access-Test' "$cors"; add_header 'Access-Control-Allow-Origin' "$http_origin"; add_header 'Access-Control-Allow-Methods' […]
我正在使用owncloud,有时通过Facebook与人分享链接。 我担心自动抓取,所以我想拒绝Facebook访问我的owncloud.thomas-steinbrenner.net服务器(它访问所有链接,以获得预览图片,预览文本等) 有没有办法在nginx中做到这一点? 像通过主机名或代理? (我觉得使用IP是一个不能赢的游戏)。 如果没有:是否有其他方式像黑名单项目列表的政府,FB-等iptables的iptables?
我如何才能应用基本身份validation只有当一个htaccess文件存在? 如果第一次尝试将auth_basic指令放在一个if块中,但这是不允许的。 然后,我尝试redirect到一个命名的位置,但是当基本身份validation的位置正常工作时,redirect(发生在没有htaccess文件时)正在出错。 这是什么configuration看起来像: server { listen 80; server_name ~^(?<instance>.+?)\.foo.example.com$; set $htaccess_user_file /var/htaccess/$instance.foo.example.com.htaccess; if (!-f $htaccess_user_file) { rewrite ^ @foo; } location / { auth_basic "Restricted"; auth_basic_user_file $htaccess_user_file; root /var/www/$instance.foo.example.com; try_files $uri /index.html =404; } location @foo { root /var/www/$instance.foo.example.com; try_files $uri /index.html =404; } } 这里是我没有htaccess文件时得到的错误消息: 2013/07/12 08:37:08 [error] 32082#0: *192 open() "/usr/html@foo" failed […]
(特别是,ASP.NET回发 – 但即使只有其中一些) 我有nginxconfiguration为反向代理一个ASP.NET服务器。 大部分工作非常好。 所有GET请求都起作用,并且大多数POST请求也起作用。 大多数ASP.NET回发工作。 但是偶尔会有一个回复,因为一些我不明白的原因,每一次都没有得到答复(也就是保证失败)。 这个特定的服务器被configuration为可以通过指定端口号直接访问ASP.NET实例(绕过nginx)。 当nginx被绕过时,一切正常,所有的请求立即被回应。 我能做些什么来进一步debugging呢? 我一直无法让Nginxlogging事件,比如开始和结束上游请求/响应,更不用说整个机构了。 提琴手不能帮助,因为没有任何错误的请求从浏览器到nginx; 这个问题发生在nginx和ASP.NET之间。 任何其他的想法? configuration摘录: http : //pastebin.com/FyTtuUQZ 这可能与Keepalive有关,因为回发最终会在大约65秒后超时 – 上述configuration中指定的时间为保活超时。 但这可能是一个红鲱鱼。 PS它是一个仅限于开发的服务器,反向代理的目的是这样我们可以在这台机器上指向几个域,并且不兼容的服务器都显示为在端口80上。但是为了让我相信nginx reverse代理生产服务器,我需要了解这个问题,以确保它不会影响生产。
从我对git的理解来看,http / https界面很简单。 你有两个命令 – 推送和获取。 基于wireshark跟踪,抓取url显示为以下格式: /git/#path-to-repo#/info/refs?service=git-upload-pack 推送url显示为以下格式: /git/#path-to-repo#/info/refs?service=git-receive-pack /git/#path-to-repo#/git-receive-pack 我想设置nginxconfiguration,以便推到一个git后端,并从另一个(git镜像使用gitblit联合)提取。 所以我build立了一个像这样的nginxconfiguration: proxy_cache_bypass $arg_preview; location ~ (.*)git-receive-pack { proxy_pass http://#push-ip#:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto http; proxy_set_header X-Forwarded-Port 80; } location / { proxy_pass http://#pull-ip#:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto http; proxy_set_header X-Forwarded-Port 80; } / git /#path-to-repo#/ […]
我正在使用php-fpm将Apache应用程序从Apache移动到Nginx。 我差不多完成了,除了一个我在Nginx中没有做的重写指令。 以下是我需要端口的Apacheconfiguration的摘录: # Handle alianza.quehambre.cl RewriteCond %{HTTP_HOST} ^alianza\.quehambre\.cl [NC] RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-l RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(api|get)/(.*) RewriteRule ^(.*)$ /index.php/get/$1 [L,QSA] 完整的Nginxconfiguration在这个要点 ,包括我目前的非工作尝试写出上述规则。
我想为我的虚拟服务器的特定configuration,但我有一个问题,解释,以Nginx的:) 它很简单。 如果URI看起来像 example.com/whatever_1/whatever_2/…/whatever_n 我想重写它 example.com/index.php?request=whatever_1/whatever_2/…/whatever_n 第二个是如果URI以/administration/ like开头 example.com/administration/whatever_1/…/whatever_n 我想把它改写成 example.com/administration/index.php?request=whatever_1/…/whatever_n 我正在修理周围,并试图: server { # listen 80; server_name example.com; index index.html index.php; root /srv/example/; location ~ /administration/(.*)$ { if (!-e $request_filename) { rewrite ^/(.*)$ /administration/index.php?request=$1 last; } break; #tried with and without it } location / #tried with and without this location block { if […]
我是nginx新手,我非常喜欢它与php-fpm结合的速度。 我想保护一个文件夹 location / { try_files $uri $uri/ $uri.php /; auth_basic "restricted"; auth_basic_user_file /www/config/global.passwd; } 这是通过访问/ ,但打在/test.php它不要求密码。 它确实要求在/test/所以这只适用于文件夹。 如何包含文件以进行保护?
我正在研究HAProxy作为多个nginx服务器的负载平衡器。 每个服务器正在stream式传输一个静态文件(audio文件)。 Nginx将使用symfony2框架。 关于会话的亲和力/持久性,我将在nginx服务器上使用memcached。 我从一个有限的预算开始,所以我想尽可能灵活地扩展networkingscheme。 我会画出一个简单的问题: +—> nginx server 1 @ 1gbps | HAProxy <–+—> nginx server 2 @ 1gbps | +—> nginx server 3 @ 1gbps Ps:据我所知,我需要第二台haproxy服务器进行故障转移,但不幸的是,我现在买不起更多的服务器。 我主要关心的是如何用HAProxy完成“回复”。 根据我的理解,如果回复是通过HAProxy进行的,LB会成为一个瓶颈,因为它不能为端口容量提供更多的用户(假设它是一个stream量服务器,假设负载为95%)。 然而,我看到人们说HAProxy只做路由,但我不确定如果入站和出站stream量仍然通过HAProxy是什么意思。
所以我想在nginx上安装一个新的drupal 6站点。 我已经成功地设置了conf文件和db。 当我尝试访问mysite.com以便我可以按照一步一步安装指南,它正确地redirect到mysite.com/install.php但返回403禁止的错误。 在我的conf文件中,我尝试将我的IP添加到允许的IP列表中: location = /install.php { allow 127.0.0.1; allow my_ip_address; deny all; } 但是,当我尝试访问mysite.com/install.php ,浏览器下载文件而不是运行它。 我该怎么办? 我可以使用drush来安装一个新的站点,但我想使用drupal的install.php文件(向朋友展示它是如何完成的)。 谢谢。 server { server_name www.mysite.com; return 301 $scheme://mysite.com$request_uri; } # server domain return. server { server_name mysite.com; root /var/www/mysite.com; index index.html index.htm index.php; access_log /var/log/nginx/mysite.access.log; error_log /var/log/nginx/mysite.error.log; location = /favicon.ico { log_not_found off; access_log off; […]