簡體   English   中英

NGINX - 將某些路由重定向到子域

[英]NGINX - Redirecting certain routes to a subdomain

我創建了一個項目,其中有:

  1. my-project.com展示我的 Angular 8 應用程序
  2. api.my-project.com訪問我的 Symfony 5 ZDB974238714CA8DE634A7CE1D08

I built a very basic landing page on my Angular app, but now, I changed my mind and I want to have my angular app into app.my-project.com and keep the my-project.com to show a beautifull landing page.

問題是有一些客戶端已經在主域上使用該服務,並且該請求應該被重定向到app.my-project.com子域。

應該是這樣的:

my-project.com/login -> app.my-project.com/login

my-project.com/pm-something -> app.my-project.com/pm-something

這是我需要的偽代碼:

if( url.includes('login') or url.includes('pm-') ) {
    redirectTo(app.my-project.com)
}

我認為實現這一目標的最簡單方法是在我的 NGINX 配置文件中重寫路由,但我不確定正確的方法。

提前致謝。

NGINX 根據服務器配置中定義的location塊選擇請求 URI 處理規則。 關於這個指令的官方文檔在這里這里有一些額外的解釋。 您可以使用兩個前綴位置實現所需的行為:

location /login {
    return 301 $scheme://app.my-project.com$request_uri;
}
location /pm- {
    return 301 $scheme://app.my-project.com$request_uri;
}

這兩個前綴位置可以替換為單個正則表達式匹配位置:

location ~ ^/(login|pm-) {
    return 301 $scheme://app.my-project.com$request_uri;
}

NGINX 使用系統 PCRE 庫和通用 PCRE 正則表達式語法,除非您不應該對正則表達式模式使用分隔符(與使用~ (區分大小寫的匹配)、 ~* (不區分大小寫的匹配)或!~ / !~* (區分大小寫/不區分大小寫的非匹配)運算符)。 此外,您不需要在/字符前加上反斜杠(盡管您仍然可以這樣做,但它不會改變正則表達式模式的含義)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM