Nginx 按伺服器名稱轉發

Nginx 按伺服器名稱轉發

我有幾個 dockerized 服務,提供 http(和 https)服務。內部 http 端口 (80) 在 docker 層級對應到不同的端口,以便在主機上可以存取。這工作正常:

curl localhost:1234

帶我到容器中的 http 服務。

現在我希望可以透過 dns 存取它,而不必指定連接埠(我想保護客戶端免受此連接埠對映的影響)。我想使用 nginx 將請求轉送到http://myserver1-> http://localhost:1234

nginx可以這樣設定嗎?是否可以配置多重轉發,如下:

http://myserver1  --> http://localhost:1234
http://myserver2  --> http://localhost:1235
...

答案1

是的,它可以。

server_name 選項用於尋找同一 nginx 伺服器上託管的不同網站之間的最佳匹配,例如

server {
  listen 80;
  listen [::]:80;
  server_name myserver1; 

另一個像

server {
  listen 80;
  listen [::]:80;
  server_name myserver2; 

這樣它們就可以在連接埠 80 上運行並根據它們是否被呼叫來匹配http://myserver1或者http://myserver2

現在如何連接到您的服務?您可以定義上游服務提供者,例如

#place this outside of the 'server{' block
upstream server1 {
  server localhost:1234;
} 

然後透過重定向到它

# place this inside the 'server{' block
location / {
  proxy_pass http://server1;
}

相關內容