Articles of 正则expression式

Express.js与虚拟pathredirect

所以当我在nginx.conf中指向一个node.js应用程序时,我设置了一个虚拟path。 相关部分如下所示: location /app { rewrite /app/(.*) /$1 break; proxy_pass http://localhost:3000; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 伟大的作品,除了当我的快递应用程序调用redirect。 作为一个例子,开发盒在端口8080上运行nginx,所以url到节点应用程序的根目录如下所示: http://localhost:8080/app 当我从express调用res.redirect('/app')时,实际的redirect转到: http://localhost/app 由于没有任何东西在端口80上运行,显然,这失败了。 我也无法find请求对象的任何属性,这使得我可以将URL构build为绝对URL。 任何想法硬编码或使其成为一个环境variables? *编辑:多一点挖掘后,它看起来像主机头被定义为'localhost'在这种情况下,而如果我直接连接到expression式应用程序,主机头定义为'localhost:3000'(其中3000是节点应用程序正在监听的端口)。 那么如何改变上面的映射来包含nginx服务器的端口呢?

nginx别名语法

我试图使用下面的语法别名在网站中的一些照片的位置: location ~/^apple-touch-icon(.*)\.png$ { alias /opt/web_alpha/img/$1; } 是正确的,或者我在nginx的access.log中错过了其他的东西我得到这个消息: “GET /apple-touch-icon.png HTTP / 1.1”404 142 但在浏览器中显示索引页面 此外,我很困惑别名和重写在nginx,我应该使用

重写URL的Glype(nginx)

我有一个Glype代理,我想重写这个URL。 网页上的所有url都会自动转换为:http://proxy.com/browse.php?u = [urlHERE]。 例如:如果我去/在我的代理上的海盗湾浏览我想从这个URL转换: proxy.com/tpb/browse.php?u=http%3A%2F%2Fthepiratebay.se%2Fbrowse&b=0 对此: proxy.com/tpb/browse 正如你所看到的,整个部分: browse.php?u=http%3A%2F%2Fthepiratebay.se%2F 消失了( &b=0后面的URL)。 它具有与海盗湾相同的域结构。 我试过这样的事情: location /tpb/ { rewrite ^/browse.php?u=(.*)$ /$1? last; break; } 但它不工作。 有人有答案吗? 其他function也是受欢迎的。 (比如fastcgi_split_path_info或者别的与nginx兼容的东西) (如果你想看到一个例子去tpb.piratenpartij.nl,但我不知道他们是否使用Glype)

正则expression式模式不支持#符号

我在Nginxconfiguration中使用正则expression式来捕获文件的URL,但如果文件的URL包含#符号,正则expression式模式将不会捕获它。 这是nginxconfiguration的一部分。 location ~ ^/p/(?<secure>[\w\-=]+,\d+),(?<user>[^/]+)(?<file>/.*)$ { } 导致错误的示例文件URL,因为它有#符号。 http://mydomain.com/p/KPFHELPFAQrc3rUPIUS7Cg,1401267921,1/4962/Ubuntu#6 (DVD-ISO)/Ubuntu-12-04.iso

对一个variables的Nginxstring操作

有没有办法我可以应用stringreplace的Nginxvariables。 我使用nginx作为s3受限下载的代理。 我将$upstream_http_etag转发给不同名称的响应头。 add_header Content-MD5 $upstream_http_etag; proxy_set_header Content-MD5 $upstream_http_etag; 问题是etag被double quoted 。 在添加到标题之前,我想删除这个双引号。 有没有可能的方法来做到这一点。 我知道我可以在客户端上删除它。 但是,这是旧的应用程序没有更新工作。 任何帮助深表感谢。

如何在Nginx服务器上执行不区分大小写的正则expression式?

将服务器从Ubuntu迁移到Debian后发生了严重的问题。 Debian将不允许两个文件,例如“ a.html ”和“ A.html ”在同一个目录中。 我的服务器获取三种types的请求,这是当前状态: /archive/2014/www.Test.com等请求随文件提供: /archive/2014/blank.html /archive/2015/Test.com和/archive/2015/www.Test.com等请求随文件/archive/2015/T.html 诸如/archive/2015/test.com和/archive/2015/www.test.com类的请求随文件/archive/2015/t.html 我希望最后两种请求在两种情况下都提供文件/archive/2015/t.html (以不区分大小写的方式)。 我怎么能达到这个结果? 当前的服务器设置是: server { listen 127.0.0.1:80; server_name 127.0.0.1; access_log /srv/siteone/logs/access.log; error_log /srv/siteone/logs/error.log error; location / { root /srv/siteone/html; index index.html index.htm; expires 1d; } rewrite ^/archive/2014/(.+)$ /archive/2014/blank.html last; rewrite ^/archive/2015/(www\.)*(.)(.+)$ /archive/2015/$2.html last; error_page 403 /403.html; error_page 404 /404.html; }

让nginx取代一个css样式表

我使用模块HttpSubsModule nginxreplace一些CSS样式表的另一个。 我的正则expression式是 subs_filter '<link(.*)href="(.+\.css)([\?.]?[^"]*)(".*)>' '<link href="new.css" rel="stylesheet" type="text/css">' irg; 这似乎有效,但subs_filter不起作用。 更简单的forms,比如 subs_filter (.*)css '<link href="new.css" rel="stylesheet" type="text/css">' irg; 做工作,但抓住了很多错误的结果。 我应该如何编写这个正则expression式? 编辑:以下版本的工作www.regexe.com取代任何链接标签与CSS文件,但仍然不能在Nginx的工作。 subs_filter '(<link.*href=")(.+\.css)([\?.]?[^"]*)(".*>)' '$1new.css$3$4' irg;

删除引导斜线NGINX

我在我的URL(这是不理想的)双斜杠。 所以我的应用程序是/ / //signup 。 错误信息: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET //signin"" 无论如何改变它只是/signup ? 我已经尝试了下面的第一个位置块(这是一个捕获代理)。 也许沿着…的路线 location /apps/phpauthentication/1 { rewrite ^\//(.*)/$ /$1 break; try_files $uri /app_dev.php$is_args$args; if (!-e $request_filename) { rewrite ^/(.*)$ /app_dev.php last; } } 完整configuration: server { listen 80; server_name localhost; root /srv/http/web; index app_dev.php index.php index.html; location /apps/phpauthentication/1 […]

你如何根据位置dynamic设置nginx根?

我找不到任何具体的信息,但我基本上试图抓住一个位置: http://img.zgserver.com/regex/image.png 我希望它指向如此的根: /var/www/$project/Content/Images/image.png 这是我试图放在一起,但它似乎并没有工作: location ~ ^/(?<project>.+)/Content/^(?<content>.+)$ { root /var/www/$project/Content/$content; } 我似乎没有赶上这个位置,因为我得到了一个404错误,这是一个PHP页面,我已经与try_files在一个位置为/。 这让我觉得正则expression式是错误的,但我不确定。

Nginx的位置正则expression式捕获variables

我有这个REST APIurl: http://localhost:4000/api/v2/stocks/accounts/1162/tradings 我想要它到proxy_pass URL: http://localhost:4001/api/v2/stocks/accounts/1162/tradings 其中1162是可以是其他值的URL参数。 我有以下几点: location ^~ /api/v2/stocks/accounts/([^/]+)/tradings { proxy_pass http://localhost:4001/api/v2/stocks/accounts/$1/tradings; } 但它不起作用(404 Not Found),我用Googlesearch了类似的问题,但帮助不大: 像这样: 获取参数Nginx和proxy_pass的path或这一个: 位置正则expression式和nginxredirect的麻烦 。 有什么办法来实现我想要的,使用nginx? 在此先感谢您的帮助。 添加: 我还添加了参数capture: location ~ /api/v2/stocks/accounts/([^/]+)/tradings/(.*) { proxy_pass http://localhost:4001/api/v2/stocks/accounts/$1/tradings/$2$is_args$args; }