Nginx
nginx 負載平衡和反向代理多埠:502 錯誤網關
我使用了兩個託管許多 webradios 流的 Icecast 伺服器。每個流使用 8000 到 9000 之間的埠。
我使用 nginx(Debian 10 上的 1.16.1)來:
- 輕鬆允許所有流使用 HTTPS
- 發生故障時自動更改伺服器(例如:伺服器關閉)。(高可用/負載均衡)
事實上,這正是我所希望的:
當使用者在https://hosting.mydomain.com:8xxx上收聽流時,我想透明地(代理)在兩個 Icecast 的伺服器之一上發送請求。
例子 :
如果 HTTPS 和 Icecast_1 處於活動狀態,則將請求發送到 Icecast_1。
如果 HTTPS 和 Icecast_1 關閉,則將請求發送到 Icecast_2。
為此,我設置了以下內容:
#Icecast's cluster : upstream backend { ip_hash; keepalive 64; #Icecast 1 : server 10.1.0.101 ; #Icecast 2 : server 10.1.0.102 ; } #SSL for all server { listen 8000-9000 ssl ; server_name hosting.mydomain.com; access_log /var/log/nginx/reverse-ssl-access.log; error_log /var/log/nginx/reverse-ssl-error.log; # ssl on; ssl_protocols TLSv1.2 TLSv1.1 TLSv1 ; ssl_certificate /etc/letsencrypt/live/hosting.mydomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hosting.mydomain.com/privkey.pem; location / { resolver 8.8.8.8; proxy_pass http://backend:$server_port; } }
當我嘗試執行以下操作時遇到問題:“ http://backend :$server_port”。
在網路瀏覽器中出現錯誤:502 Bad gateway
在伺服器上的錯誤日誌中: *1 沒有定義解析器來解析後端。
你能幫助我嗎 ?
您需要在上游配置中設置伺服器埠。檢查是否可以使用 $server_port 代替 6789。
upstream backend { ip_hash; keepalive 64; #Icecast 1 : server 10.1.0.101:6789 ; #Icecast 2 : server 10.1.0.102:6789 ; } server { listen 8000-9000 ssl ; server_name nginx.mydomain.com; access_log /var/log/nginx/reverse-ssl-access.log; error_log /var/log/nginx/reverse-ssl-error.log; # ssl on; ssl_protocols TLSv1.2 TLSv1.1 TLSv1 ; ssl_certificate /etc/letsencrypt/live/hosting.mydomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hosting.mydomain.com/privkey.pem; location / { proxy_pass http://backend; } }
如果你想使用 $server_port,你不能使用上游,所以,沒有負載平衡。
location / { proxy_pass http://10.1.0.101:$server_port; }