好物优选点击查看详情 京东购买

暂无内容

nginx/

如果您的 docker 設置將有許多不同的域但只有一個數據庫(例如多商店 magento 商店或多域 wordpress),則可能不希望將所有流量轉發到一個域。 或者甚至必須在 ENV 變量中對其進行硬編碼。

基於子域進行移植更容易。

在您的 nginx 配置中定義一個 map,列出您的端口號

這將使得當變量$subdomain匹配下面 map 中的任何條目時,變量$port_number將被設置為相應的值。 在我的示例中,如果沒有匹配項,則默認為"013"

然后將以下指令添加到您的服務器指令。

server_name server_name ~^(?:(?<subdomain>[^.]+)\.|)(?<base_domain>.+\.localhost)$; 

這些正則表達式設置了 2 個變量$subdomainbase_domain

如果請求是example.com.localhost

  • $subdomain會有例子
  • $base_domain將有com.localhost
  • $port_number將有013

如果請求是example.com.localhost

  • $subdomain將有phpmyadmin
  • $base_domain會有example.com.localhost
  • $port_number將有014

[可選]如果您需要變量中的實際域,您可以使用如下 if 語句:

set $lookup_domain $host; if ($port_number != "013") { set $lookup_domain $base_domain; } 

$lookup_domain 將包含您感興趣的實際域。

然后,您可以像這樣使用代理通行證:

location / { proxy_pass http://docker-host:${backend}${port_number}; proxy_pass_header Content-Type; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; # allow websockets proxy_pass_header Connection; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; } 

$backend變量在我的例子中包含我的 webapp 集的基本端口范圍。

因此,代理 url 會變成類似http://docker-host:20013的內容,具體取決於應用程序。 隨意跳過它並將端口設置為實際端口或其他任何端口,或者修改它以遵循任何其他邏輯。

原文链接:https://stackoom.com/zh/question/30iNo

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享