Nginx 正则表达式位置语法
正则表达式可以与 Nginx 位置块部分一起使用,这是通过 PCRE 引擎实现的。
由于没有完整记录,此功能究竟支持什么?
我有一个名为 的站点http://example.com,其中运行着一个可以在http://example.com/app1. app1 位于 nginx 反向代理后面,如下所示:
location /app1/ {
proxy_pass http://localhost:8080/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
Run Code Online (Sandbox Code Playgroud)
将尾部斜杠添加到该proxy_pass字段可以让我“删除” URL 的 /app1/ 部分,至少就应用程序而言。所以 app1 认为它正在获取对根 url 的请求(例如,我在 app1 中有一个路由位于'/',而不是'/app1')。
但是,我想让 nginx 不区分大小写。所以无论我去http://example.com/App1还是http://example.com/APP1,它仍然应该将请求转发到app1,并删除url的/app1/部分。
当我尝试使用 nginx 不区分大小写的规则时,它不允许将 URI 的其余部分转发到 app1。
location ~* /app1/ {
proxy_pass http://localhost:8080/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade; …Run Code Online (Sandbox Code Playgroud) 我正在向我们在 Nginx 上运行的现有网站添加 Dockerized 博客堆栈(Wordpress + MariaDB)。location /已经为网站提供服务,我被指示向 Nginx 配置添加逻辑,/blog将所有流量重定向到 Docker 容器。
localhost:9999在服务器上启动了 wordpress 容器。
location ^~ /blog {
proxy_pass http://localhost:9999;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
}
问题:
Wordpress 重定向http://server/blog到http://wp-admin/install.php,由于没有相关规则,因此我收到了 404。
我更改了locationto 进程/blog以及任何包含wp-.*. 假设所有 Wordpress 页面都具有该 URL。
location ~ ^/(blog|wp-.*) {
这通过 Wordpress 设置起作用。如果我明确访问,http://server/wp-admin我可以转到博客管理页面。
问题:
http://server/?p=31 …