我喜欢这个简单的重写规则: /somefolder/mypage.aspx?myid=4343&tab=overview 被redirect到: /folder/4343/overview/ 我寻找一些解决scheme,没有一个真正的工作.. 我试过了: rewrite ^/somefolder/mypage.aspx?myid=(.*)&tab=overview$ /folder/$1/overview permanent; 和 rewrite ^/somefolder/mypage\.aspx\?myid=(.*)&tab=overview$ /folder/$1/overview permanent; 我究竟做错了什么? 我得到404 (更简单的规则工作得很好..) 谢谢
我在Ubuntu 14.04服务器上使用默认的nginx包。 它使用/etc/nginx/nginx.conf作为主configuration,然后包含/etc/nginx/conf.d/*.conf和/etc/nginx/sites-enabled/* 。 默认的nginxconfiguration有这个指令来logging到访问日志 access_log /var/log/nginx/access.log; 我想添加X-Forwarded-For标题,所以我在conf.d文件夹中执行此操作: log_format main '$remote_addr – $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; 我的问题是,然后我得到两个logging在我的access.log文件 – 一个与标题信息和另一个没有。 我知道我可以覆盖nginx.conf文件本身,但我宁愿避免它,如果可能的话。 我也想继续使用相同的日志文件( access.log )。 有没有办法告诉nginx覆盖以前的指令,只是改变日志格式而不修改主nginx.conf文件?
我试图设置一个服务器,我的git repo可以通过HTTP(S)访问。 我使用gitolite和nginx(和web界面的gitlab,但我怀疑它有任何区别)。 我搜查了整个下午,我觉得我卡住了。 我想我已经明白了,nginx需要fcgiwrap才能和gitolite一起工作,所以我尝试了几种configuration,但都没有工作。 我的仓库在/ home / git / repositories。 这是我尝试过的三个nginxconfiguration。 1: location ~ /git(/.*) { gzip off; root /usr/lib/git-core; fastcgi_pass unix:/var/run/fcgiwrap.socket; include /etc/nginx/fcgiwrap.conf; fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; fastcgi_param DOCUMENT_ROOT /usr/lib/git-core/; fastcgi_param SCRIPT_NAME git-http-backend; fastcgi_param GIT_HTTP_EXPORT_ALL ""; fastcgi_param GIT_PROJECT_ROOT /home/git/repositories; fastcgi_param PATH_INFO $1; #fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; } 结果: > git clone http://myservername/projectname.git test/ Cloning into […]
Varnishlog: 0 CLI – Rd ping 0 CLI – Wr 200 19 PONG 1340829925 1.0 12 SessionOpen c 79.124.74.11 3063 :80 12 SessionClose c EOF 12 StatSess c 79.124.74.11 3063 0 1 0 0 0 0 0 0 0 CLI – Rd ping 0 CLI – Wr 200 19 PONG 1340829928 1.0 0 CLI – […]
我在Windows Server 2008 R2(x64)上运行nginx作为Windows服务。 我正在使用Windows服务包装。 (其实,我已经按照这个教程: http : //mercurial.selenic.com/wiki/HgServeNginxWindows 。) 该服务运行正常。 但是,服务器不处理信号(例如停止/重新加载)。 这意味着如果我停止服务,nginx不会停止。 (我必须杀死它) 而当我想从命令行重新加载configuration时: C:\Users\Administrator>E:\apath\nginx\nginx.exe -p E:\apath\nginx -c E:\apath\nginx.conf -s reload 它输出: nginx: [error] OpenEvent("Global\ngx_reload_4268") failed (5: Access is denied) 我以pipe理员身份运行命令,服务正在NETWORK SERVICE用户下运行。 任何提示或类似的问题?
我试图在一个子域上运行gitlab。 我使用我的vserver上的omnibus安装程序(运行Ubuntu 14.04.1)安装了最新的gitlab版本,并禁用了捆绑的nginx,并configuration了unbundled nginx,并在此处发布了configuration。 如何在nginx上设置子域名? 在/ etc / nginx的/网站-菱/ gitlab upstream gitlab { server unix:/home/git/gitlab/tmp/sockets/gitlab.socket; } server { listen 80 default_server; # eg, listen 192.168.1.1:80; In most cases *:80 is a good idea server_name git.domain.com; # eg, server_name source.example.com; server_tokens off; # don't show the version number, a security best practice root /home/git/gitlab/public; client_max_body_size 500m; […]
我需要将dynamic内容包含到Web服务器级别的静态页面中。 到目前为止我发现的两个选项是Server Side Include (SSI)和Edge Side Include (ESI) 。 尽pipeSSI的起源似乎比较古老和模糊( 伊利诺斯大学的95页的caching页面似乎是参考文献 ,显然是来自NCSA httpdnetworking服务器,它曾经为95%的networking供电 )并欣喜( 从2001年的w3规格,主要是由Akamai的人写的 )。 另外,我一直听到有关Varnish + ESI ,我想知道是否应该走这条路。 不过,我已经用nginx做了一个设置,只支持SSI ,并希望遵循KISS原则,并尽可能避免使用Varnish 。 对于我的直接用例来说,在每个页面顶部都会包含一个dynamic用户栏,我相信SSI将会完成这项工作。 然而,我担心的是,随着我的网站的增长,我只需要ESI支持的function,这将迫使我重新devise所有的东西,这引起了我的问题(最后读者说): SSI不支持哪些主要function会使您selectESI (反之亦然)?
我正在使用WP超级caching的WordPress。 我想要来自Google的访问者(包括所有国家/地区特定推荐人,如google.co.in,google.co.uk等)查看未caching的内容。 有我的nginx规则是不是我想要的方式: server { server_name website.com; location / { root /var/www/html/website.com; index index.php; if ($http_referer ~* (www.google.com|www.google.co) ) { rewrite . /index.php break; } if (-f $request_filename) { break; } set $supercache_file ''; set $supercache_uri $request_uri; if ($request_method = POST) { set $supercache_uri ''; } if ($query_string) { set $supercache_uri ''; } if ($http_cookie […]
我目前正试图设置Nginx来服务我所有的静态文件。 由于他们不会经常更改我想我们gzip_static模块允许我预先gzip我的文件的副本,以节省一些CPU时间,并允许更好的压缩。 我用–with-http_gzip_static_module编译Nginx并设置它,以便它为我的静态文件提供服务,到目前为止没有问题。 我想testing并确保静态gzip实际上工作,所以我做了两个文件, test.txt和test.txt.gz 每个文件的第一行表示是否被压缩,然后是一个换行符和256个随机字符(两个文件不同)。 我读过文件的修改时间和它的gzip对应应该是一样的,我已经尝试了以下两种: touch test.* touch -r test.txt test.txt.gx 在我的本地机器上,我用curltesting: curl $URL/test.txt 这工作正常,我回来的版本,我没有预先压缩,但是当我这样做: curl -H "Accept-Encoding: gzip" $URL/test.txt | gunzip 我也回来了我没有预压缩的版本。 我尝试在我的nginx.conf设置gzip off ,但是没有什么区别。 我也用–without-http_gzip_module重新编译了Nginx,而且似乎也没有什么区别,Nginx 仍然在忙于自己的工作。 我对Nginx来说相当陌生,但是我真的很茫然。 这是./nginx -V的输出 built by gcc 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) configure arguments: –sbin-path=$SOMEPATH/nginx –prefix=$SOMEPATH –user=$ME –group=$MYGROUP –with-http_gzip_static_module –without-http_gzip_module 这是我的nginx.conf worker_processes 1; events { […]
我使用nginx作为反向代理服务于仅限https的站点。 所以我想这个网站的cookies被标记为安全的。 但后端服务器是一个http,所以它不会将安全标志设置为它的cookie。 如何修改Set-Cookie头以响应添加安全标志?