我有幾個 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;
}