Articles of 正则expression式

用于nginx路由匹配的正则expression式

我试图匹配以下路线: /{anything1}/{anything2}/file.{jpg|png} 其中anything1可以是[a-z0-9] (小写字母和数字), anything2可以是[-a-z0-9] (小写字母,数字和破折号)。 之所以我不想匹配所有的文件,像这样: location ~* (.+)\.(jpg|png)$ 是否需要location块中可用的$anything1和$anything2variables,以便稍后重写。 提前致谢。

如果请求URI不包含某些单词,如何在nginx中redirect

我正在使用nginx来提供类似静态消息的页面。 在顶层有https://example.com/en/news/以及文章的概述。 单个项目的URL类似于: https://example.com/en/news/some-article : https://example.com/en/news/some-article 所有URL包含语言,即/en/或/de/ 。 我想创build一个规则,将不包含语言的请求redirect到正确的URL(该语言是基于可通过$lang获得的IP映射的)。 以下应该工作(例如): /news/ — redirect —> /en/news/ /news/some-article — redirect —> /en/news/some-article 我的尝试看起来像这样 location ~* /news/.*$ { if ($request_uri !~* /(de|en)/$) { return 302 https://example.com/$lang/$request_uri; } } 到目前为止,这导致了无限的redirect。

nginx – 找不到位置重写

我试图redirect不同的URI请求到不同的EC2容器,我一直使用nginx作为一个catchall反向代理到Apache,但现在我想有一些重写在nginx级别完成。 这是我想要完成的: server { listen 80; server_name _; gzip on; gzip_static on; gzip_buffers 16 8k; gzip_comp_level 9; gzip_http_version 1.0; gzip_min_length 0; gzip_types text/plain text/css application/x-javascript; gzip_vary on; location / { # catch the following URI's including homepage: /contact.html, /terms.html, / proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_read_timeout 240; proxy_connect_timeout 240; proxy_send_timeout 240; […]

如何使用nginx在EC2上运行两个应用程序

我是Ubuntu的新手,一般是服务器端,我创build了一个Rails应用程序,并已部署在Ubuntu Ec2。 我正在使用Nginx和瘦服务器。该应用程序运行完美。 现在我想在同一台服务器上部署另一个应用程序。 我已经把应用程序在服务器上,当我尝试启动导轨应用程序,它不启动。 我想这是因为nginx.conf文件。 有人可以让我知道如何在同一台服务器上运行两个应用程序

NGINX:检查$ remote_user是否等于位置的第一部分

我无法弄清楚如何configuration$remote_user是否等于location的第一部分。 location / { auth_basic "ElasticSearch"; auth_basic_user_file /etc/nginx/search_passwords; location ~/([^/]*)/ { # named capture did not work either if ($remote_user = $1) { # ERROR: Unknown variable: $1 / $NAMEDWHATEVER break; } } } 我的用例: 我正尝试通过使用nginx-reverse代理进行身份validation来“保护”ElasticSearch-Cluster。 我想允许多个用户,但对新用户的修改应该尽可能简单; 最好的情况 – 只要改变htpasswd文件。 我试图采用nginx- remote_name -proxy,但是无法检查remote_name和index-name是否相等。

NGINX – 正则expression式 – search非字母数字的整个位置

我有我的虚拟主机conf下面的正则expression式: location ~* ^/!/[^a-zA-Z0-9] { return 301 $scheme://$http_host; } 但它似乎只匹配第一个字符: # Redirects to https://shouttag.com correctly https://shouttag.com/!/!pink # Does not redirect as expected https://shouttag.com/!/p!nk 变化我曾尝试: # Assume that $ is unnecessary b/c I don't know what the end of the url may be location ~* ^/!/[^a-zA-Z0-9]$ { # Only seems to work when capturing data via […]

NGINX /位置与正则expression式

我希望以下格式的每个请求: /(whatevet) /files/(whatever..)/(1 or 2 or 3)将通过/(whatevet)命令files_1上游文件/(whatevet) 。 如果url的格式为/files/(whatever..)/(4 or 5 or 6) ,则会使用/(whatevet)命令转到files_2上游。 这是我的位置文件: location ~ "^/files/(.*)/[123]/" { rewrite ^/files/(.*)/(.*) /$1 break; proxy_pass http://files_1 ; proxy_set_header Host $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; } location ~ "^/files/(.*)/[456]/" { rewrite ^/files/(.*)/(.*) /$1 break; proxy_pass http://files_2 ; proxy_set_header Host $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server […]

nginx获取url的子域名并且指定文档根目录

我没有在Nginx的专家,但我通过这样做解决了我的问题: server_name ~^(?<vhost>.*)$; root /var/www/$vhost/public; 例如,如果用户在Web浏览器中inputhttp: //sysadmin.mydomain.com,nginx将使用/var/www/sysadmin.mydomain.com/public的doc根目录 这工作正常,但在这样做,我已经创build了PHP $ _SERVER ['SERVER_NAME']; 它会打印: 〜^(?。*)$导致我的代码中的其他地方的问题。 我的解决scheme适用于nginx,但它不是正确的解决scheme。 我怎样才能实现这一点,仍然保留“可读”的服务器名称?

不忽略请求参数的nginx规则

好的,我只是想在每次调用/search时添加参数: rewrite ^/search$ /search?foo=bar redirect; 似乎简单的逻辑,但它导致了无止境的循环,因为nginx单独参数,所以$不再工作。 /search?foo=bar一次又一次地触发它,因为它愚蠢地匹配。 那么是否有任何工作解决scheme,而不触及$args ? (我想使用正则expression式,因为匹配规则有点复杂,但基本上是我想要的)

Nginx Grok模式 – 处理反斜杠或括号?

我正试图在我的logstash框中删除所有的_grokparsefailure。 似乎只有两个匪徒是NGINX日志绊了我的NGINXACCESS模式: %{IPORHOST:clientip} %{NGUSER:ident} %{NGUSER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} (?:%{NUMBER:bytes}|-) (?:"(?:%{URI:referrer}|-)"|%{QS:referrer}) %{QS:agent} 以下是标记为grok失败的消息结果的两个示例。 172.31.0.2 – – [30/Jul/2015:15:10:49 +1000] "GET /web-app/[EXPAND] HTTP/1.1" 404 6432 "-" "Amazon CloudFront" "web-app.mydomain.com" "127.0.0.1" 172.31.0.2 – – [30/Jul/2015:14:13:52 +1000] "GET /web-app/show?wid=5540cfbc3asdf034ct=&domain=apptest.mydomain.com&ttl=\x5C%2230\x5C%22&filter_id=14026&unique_id=1 HTTP/1.1" 200 11400 "http://apptest.mydomain.com/"; "Amazon CloudFront" "apptest.mydomain.com" "127.0.0.1" 通过grokdebugging器,失败与%{URIPATHPARAM:request}在第一个示例中的[EXPAND]和第二个中的\ x5C%2230 \ x5C%22的反斜杠相关。 即。 如果我从input删除[,]或\,那么grok匹配很好。 我似乎无法解决如何获得URIPATHPARAM grokfilter来处理括号和反斜杠的例子。 有任何想法吗?