我有一份新工作,他們已經在 AWS 上設定好了一切。我們有一個託管許多應用程式的測試伺服器。
如果我去
jenkins.example.com
它轉到我們正在運行的 Jenkins 實例。
如果我去
server.test.example.com
然後進入我們應用程式的測試版本。
這是在哪裡配置的(不同“子域”的不同應用程式)?是在 Nginx 中,還是在 DNS 項目中?或兩者或其他地方?
(我不能 100% 確定應該使用哪些術語來問這個問題,例如“子網域”,請隨時告訴我它們是什麼)。
答案1
這取決於你想做什麼。
您所要求的可能需要 Nginx,而不是新增 DNS 項目。
CNAME DNS 項目可以將某些子網域重新導向到某個網域(但不能直接重新導向到伺服器上的特定 IP 位址或連接埠)。如果您要將子網域重定向請求到不同的網域(即 subdomain.exampleone.com 引用 exampletwo.com),則僅需要 CNAME。
Nginx 可以充當反向代理,取得子網域並將它們重新導向到伺服器上的特定資料夾/檔案或連接埠。這可以從您的/etc/nginx/nginx.conf
*、http {...}
區塊內或目錄中進行配置,您可以在其中為每個重定向(隱含的/etc/nginx/sites-enabled/
位置)建立一個單獨的檔案。http {...}
*或你的 nginx 目錄所在的任何地方
這種重定向(到特定連接埠上的應用程式)的正確格式如下/etc/nginx/nginx.conf
:
server {
# whether you type localhost or 127.0.0.1 or something else here
# depends on your servers /etc/hosts file, where you define how
# the server refers to itself
listen localhost:80;
server_name mysubdomain.example.com;
location / {
proxy_pass http://localhost:MYPORTNUMBER
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
將 MYPORTNUMBER 替換為應用程式正在運行的連接埠。重定向到靜態檔案的過程類似,但您可以使用root /path/to/desired/folder
.
我沒有專門嘗試過,但這應該適用於多層子網域,例如server.test.ourdomain.com
您的範例中的。