websocket proxy kurulumu: Revizyonlar arasındaki fark
Değişiklik özeti yok |
Değişiklik özeti yok |
||
| 1. satır: | 1. satır: | ||
{{DISPLAYTITLE:Websocket Proxy Kurulumu}} | {{DISPLAYTITLE:Websocket Proxy Kurulumu}} | ||
Mevcut Nginx Websocket Proxy kurulumunu bozmadan aynı proxy sunucusu üzerinde ISO aktarım desteğini de aktif edebilirsiniz. | |||
Bu kurulum ile: | |||
* Mevcut /ticket websocket bağlantısı aynen çalışmaya devam eder. | |||
* Aynı proxy sunucusu üzerinden ISO aktarımı için ek destek hazırlanır. | |||
* ISO dosyaları hosting sunucusuna uğramadan doğrudan proxy sunucusuna gönderilir. | |||
* Websocket proxy ve ISO aktarım desteği aynı güvenlik yapısını kullanır. | |||
Hazırlık; | |||
Nginx websocket proxy + ISO aktarım desteği için tavsiye edilen sistem gereksinimleri: | |||
* Ubuntu 22.04 LTS (Minimal server) | |||
* 4 Core İşlemci | |||
* 8 GB RAM | |||
* 250 GB Disk Alanı (Önerilen: SSD, NVMe) | |||
==== 1. Alan adı ve SSL kurulumu; ==== | |||
Proxy sunucusunda kullanmak üzere alan adınızın DNS yönetimi bölümünden proxy.siteadresiniz.com şeklinde bir A kaydı oluşturun ve aşağıdaki komutta geçen alan adını kendinize göre düzenleyerek çalıştırın. | |||
<blockquote>apt-get update -y && apt-get upgrade -y && shutdown -r now</blockquote>2 Komut ayrı ayrı çalıştırılmalıdır.<blockquote>apt-get install nginx -y && apt install certbot python3-certbot-nginx -y && sudo certbot --nginx -d proxy.siteadresiniz.com --non-interactive --agree-tos --register-unsafely-without-email --redirect</blockquote> | |||
3. '''VMTools Module > Genel Ayarlar''' | ==== 2. Nginx yapılandırması; ==== | ||
Aşağıdaki komutu çalıştırmadan önce iki alanı kendinize göre düzenleyin: | |||
* DOMAIN = Proxy sunucusunun alan adı olmalıdır. Örnek: proxy.siteadresiniz.com ('''https:// ön eki koymayınız!''') | |||
* PANEL_ORIGIN = İsteklerin gönderileceği alan adı olmalıdır. Buraya Hosting Otomasyon Yazılımınızın kurulu olduğu alan adı veya kurulum alt alan adına yapılmışsa o yazılmalıdır. ('''https:// ile başlamak zorundadır''') Örnek: <nowiki>https://panel.siteadresiniz.com</nowiki> | |||
Önemli Not: | |||
* DOMAIN ile PANEL_ORIGIN aynı şey değildir. | |||
* DOMAIN proxy sunucusunun alan adıdır. | |||
* PANEL_ORIGIN ise yalnızca sizin hosting otomasyon panelinizden gelen isteklerin kabul edilmesi için kullanılır. | |||
* Yani başka bir alan adından aynı istekler gönderilirse kabul edilmeyecektir. | |||
Aşağıdaki komutta geçen alanları kendinize göre düzenleyip çalıştırın:<blockquote>DOMAIN="proxy.siteadresiniz.com" PANEL_ORIGIN="<nowiki>https://panel.siteadresiniz.com</nowiki>" && sudo bash -c 'printf "map $arg_hostname $ng_hostname {\n default $arg_hostname;\n}\n\nmap $arg_port $ng_port {\n default $arg_port;\n}\n\nmap $arg_ticket $ng_ticket {\n default $arg_ticket;\n}\n\nserver {\n listen 443 ssl;\n server_name '"$DOMAIN"';\n\n ssl_certificate /etc/letsencrypt/live/'"$DOMAIN"'/fullchain.pem;\n ssl_certificate_key /etc/letsencrypt/live/'"$DOMAIN"'/privkey.pem;\n\n ssl_protocols TLSv1.2 TLSv1.3;\n ssl_prefer_server_ciphers on;\n\n location /ticket {\n if ($ng_hostname = "") { return 400; }\n if ($ng_port = "") { return 400; }\n if ($ng_ticket = "") { return 400; }\n\n proxy_pass <nowiki>https://$ng_hostname:$ng_port$ng_ticket;\n</nowiki> proxy_http_version 1.1;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection "upgrade";\n proxy_set_header Host $host;\n proxy_set_header X-Forwarded-For $remote_addr;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_read_timeout 86400;\n proxy_ssl_verify off;\n proxy_ssl_verify_depth 0;\n proxy_ssl_server_name on;\n }\n\n location /iso-agent/ {\n if ($request_method = OPTIONS) {\n add_header Access-Control-Allow-Origin '"$PANEL_ORIGIN"' always;\n add_header Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS" always;\n add_header Access-Control-Allow-Headers "Authorization, Content-Type, X-Chunk-Index, X-Chunk-Size, X-Chunk-Checksum, X-Upload-Length" always;\n add_header Access-Control-Max-Age 86400 always;\n add_header Content-Length 0;\n add_header Content-Type text/plain;\n return 204;\n }\n\n add_header Access-Control-Allow-Origin '"$PANEL_ORIGIN"' always;\n add_header Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS" always;\n add_header Access-Control-Allow-Headers "Authorization, Content-Type, X-Chunk-Index, X-Chunk-Size, X-Chunk-Checksum, X-Upload-Length" always;\n\n proxy_pass <nowiki>http://localhost:9480/;\n</nowiki> proxy_http_version 1.1;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $remote_addr;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_read_timeout 86400;\n proxy_send_timeout 86400;\n proxy_request_buffering off;\n proxy_buffering off;\n client_max_body_size 64m;\n }\n}\n" | tee /etc/nginx/sites-available/default > /dev/null' && nginx -t && systemctl restart nginx</blockquote> | |||
==== 3. ISO aktarım desteği için klasörleri ve güvenlik anahtarını oluşturma; ==== | |||
Aynı proxy sunucusunda ISO aktarımı için gerekli klasörleri oluşturun ve modül ile proxy arasında kullanılacak Gizli Güvenlik Anahtarı değerini üretin. | |||
PROXY_SHARED_SECRET="$(openssl rand -hex 32)" && sudo mkdir -p /opt/vmtools-transfer-agent/{data,tmp,logs} && echo "PROXY_SHARED_SECRET=$PROXY_SHARED_SECRET" | sudo tee /opt/vmtools-transfer-agent/agent.env > /dev/null && echo "$PROXY_SHARED_SECRET" | |||
Not: | |||
* Komut çıktısında görünen değer VMTools Admin modülü sayfasında genel ayarlar menüsünden '''Proxy Erişim Anahtarı''' alanına girilecektir. | |||
* Bu değeri kaybetmeyiniz ve 3. şahıslarla paylaşmayınız! | |||
Ne işe yarar? | |||
* Bu gizli anahtar, modül ile proxy sunucusunun birbirini tanıması için kullanılır. | |||
* Böylece sadece sizin sitenizden gelen istekler proxy sunucusu tarafından kabul edilir. | |||
* Websocket proxy ve ISO aktarım desteği aynı güvenlik yapısını kullanır. | |||
==== '''4. Modül ayarları''' ==== | |||
VMTools Module > Genel Ayarlar bölümünde aşağıdaki alanları doldurup kaydedin: | |||
* '''Websocket Proxy Hostname/IP Adresi''' Proxy için oluşturduğunuz alan adını başında '''http://''' ve '''www.''' olmadan girin. Örnek: proxy.siteadresiniz.com | |||
* '''Proxy ISO Transfer URL''' Aynı proxy alan adı üzerinden aşağıdaki şekilde, başında '''https://''' olacak şekilde girin. Örnek: <nowiki>https://proxy.siteadresiniz.com/iso-agent</nowiki> | |||
* '''Proxy Erişim Anahtarı''' 3. adımda oluşturulan değeri girin. | |||
<blockquote><u>Önemli Not:</u> | |||
* Proxy sunucusu hali hazırda vcenter'ınıza ve esxi sunucularınıza erişebiliyor olmalıdır! | |||
* Websocket proxy ve ISO aktarım desteği aynı proxy sunucusunda ve aynı alan adı üzerinde çalışır. | |||
* Bu kurulumda yeni bir proxy sunucusu gerekmez. | |||
* Bu kurulumda ikinci bir proxy alan adı gerekmez. | |||
</blockquote> | |||
Kurulum tamamlandıktan sonra aşağıdaki kontrolleri yapabilirsiniz: | |||
* Web konsol bağlantısı açılabiliyor olmalıdır. | |||
* Proxy alan adınız tarayıcıdan düzgün açılıyor olmalıdır ve ssl tanımlandığını görmelisiniz. | |||
04.34, 8 Nisan 2026 tarihindeki hâli
Mevcut Nginx Websocket Proxy kurulumunu bozmadan aynı proxy sunucusu üzerinde ISO aktarım desteğini de aktif edebilirsiniz.
Bu kurulum ile:
- Mevcut /ticket websocket bağlantısı aynen çalışmaya devam eder.
- Aynı proxy sunucusu üzerinden ISO aktarımı için ek destek hazırlanır.
- ISO dosyaları hosting sunucusuna uğramadan doğrudan proxy sunucusuna gönderilir.
- Websocket proxy ve ISO aktarım desteği aynı güvenlik yapısını kullanır.
Hazırlık;
Nginx websocket proxy + ISO aktarım desteği için tavsiye edilen sistem gereksinimleri:
- Ubuntu 22.04 LTS (Minimal server)
- 4 Core İşlemci
- 8 GB RAM
- 250 GB Disk Alanı (Önerilen: SSD, NVMe)
1. Alan adı ve SSL kurulumu;
Proxy sunucusunda kullanmak üzere alan adınızın DNS yönetimi bölümünden proxy.siteadresiniz.com şeklinde bir A kaydı oluşturun ve aşağıdaki komutta geçen alan adını kendinize göre düzenleyerek çalıştırın.
apt-get update -y && apt-get upgrade -y && shutdown -r now
2 Komut ayrı ayrı çalıştırılmalıdır.
apt-get install nginx -y && apt install certbot python3-certbot-nginx -y && sudo certbot --nginx -d proxy.siteadresiniz.com --non-interactive --agree-tos --register-unsafely-without-email --redirect
2. Nginx yapılandırması;
Aşağıdaki komutu çalıştırmadan önce iki alanı kendinize göre düzenleyin:
- DOMAIN = Proxy sunucusunun alan adı olmalıdır. Örnek: proxy.siteadresiniz.com (https:// ön eki koymayınız!)
- PANEL_ORIGIN = İsteklerin gönderileceği alan adı olmalıdır. Buraya Hosting Otomasyon Yazılımınızın kurulu olduğu alan adı veya kurulum alt alan adına yapılmışsa o yazılmalıdır. (https:// ile başlamak zorundadır) Örnek: https://panel.siteadresiniz.com
Önemli Not:
- DOMAIN ile PANEL_ORIGIN aynı şey değildir.
- DOMAIN proxy sunucusunun alan adıdır.
- PANEL_ORIGIN ise yalnızca sizin hosting otomasyon panelinizden gelen isteklerin kabul edilmesi için kullanılır.
- Yani başka bir alan adından aynı istekler gönderilirse kabul edilmeyecektir.
Aşağıdaki komutta geçen alanları kendinize göre düzenleyip çalıştırın:
DOMAIN="proxy.siteadresiniz.com" PANEL_ORIGIN="https://panel.siteadresiniz.com" && sudo bash -c 'printf "map $arg_hostname $ng_hostname {\n default $arg_hostname;\n}\n\nmap $arg_port $ng_port {\n default $arg_port;\n}\n\nmap $arg_ticket $ng_ticket {\n default $arg_ticket;\n}\n\nserver {\n listen 443 ssl;\n server_name '"$DOMAIN"';\n\n ssl_certificate /etc/letsencrypt/live/'"$DOMAIN"'/fullchain.pem;\n ssl_certificate_key /etc/letsencrypt/live/'"$DOMAIN"'/privkey.pem;\n\n ssl_protocols TLSv1.2 TLSv1.3;\n ssl_prefer_server_ciphers on;\n\n location /ticket {\n if ($ng_hostname = "") { return 400; }\n if ($ng_port = "") { return 400; }\n if ($ng_ticket = "") { return 400; }\n\n proxy_pass https://$ng_hostname:$ng_port$ng_ticket;\n proxy_http_version 1.1;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection "upgrade";\n proxy_set_header Host $host;\n proxy_set_header X-Forwarded-For $remote_addr;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_read_timeout 86400;\n proxy_ssl_verify off;\n proxy_ssl_verify_depth 0;\n proxy_ssl_server_name on;\n }\n\n location /iso-agent/ {\n if ($request_method = OPTIONS) {\n add_header Access-Control-Allow-Origin '"$PANEL_ORIGIN"' always;\n add_header Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS" always;\n add_header Access-Control-Allow-Headers "Authorization, Content-Type, X-Chunk-Index, X-Chunk-Size, X-Chunk-Checksum, X-Upload-Length" always;\n add_header Access-Control-Max-Age 86400 always;\n add_header Content-Length 0;\n add_header Content-Type text/plain;\n return 204;\n }\n\n add_header Access-Control-Allow-Origin '"$PANEL_ORIGIN"' always;\n add_header Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS" always;\n add_header Access-Control-Allow-Headers "Authorization, Content-Type, X-Chunk-Index, X-Chunk-Size, X-Chunk-Checksum, X-Upload-Length" always;\n\n proxy_pass http://localhost:9480/;\n proxy_http_version 1.1;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $remote_addr;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_read_timeout 86400;\n proxy_send_timeout 86400;\n proxy_request_buffering off;\n proxy_buffering off;\n client_max_body_size 64m;\n }\n}\n" | tee /etc/nginx/sites-available/default > /dev/null' && nginx -t && systemctl restart nginx
3. ISO aktarım desteği için klasörleri ve güvenlik anahtarını oluşturma;
Aynı proxy sunucusunda ISO aktarımı için gerekli klasörleri oluşturun ve modül ile proxy arasında kullanılacak Gizli Güvenlik Anahtarı değerini üretin.
PROXY_SHARED_SECRET="$(openssl rand -hex 32)" && sudo mkdir -p /opt/vmtools-transfer-agent/{data,tmp,logs} && echo "PROXY_SHARED_SECRET=$PROXY_SHARED_SECRET" | sudo tee /opt/vmtools-transfer-agent/agent.env > /dev/null && echo "$PROXY_SHARED_SECRET"
Not:
- Komut çıktısında görünen değer VMTools Admin modülü sayfasında genel ayarlar menüsünden Proxy Erişim Anahtarı alanına girilecektir.
- Bu değeri kaybetmeyiniz ve 3. şahıslarla paylaşmayınız!
Ne işe yarar?
- Bu gizli anahtar, modül ile proxy sunucusunun birbirini tanıması için kullanılır.
- Böylece sadece sizin sitenizden gelen istekler proxy sunucusu tarafından kabul edilir.
- Websocket proxy ve ISO aktarım desteği aynı güvenlik yapısını kullanır.
4. Modül ayarları
VMTools Module > Genel Ayarlar bölümünde aşağıdaki alanları doldurup kaydedin:
- Websocket Proxy Hostname/IP Adresi Proxy için oluşturduğunuz alan adını başında http:// ve www. olmadan girin. Örnek: proxy.siteadresiniz.com
- Proxy ISO Transfer URL Aynı proxy alan adı üzerinden aşağıdaki şekilde, başında https:// olacak şekilde girin. Örnek: https://proxy.siteadresiniz.com/iso-agent
- Proxy Erişim Anahtarı 3. adımda oluşturulan değeri girin.
Önemli Not:
- Proxy sunucusu hali hazırda vcenter'ınıza ve esxi sunucularınıza erişebiliyor olmalıdır!
- Websocket proxy ve ISO aktarım desteği aynı proxy sunucusunda ve aynı alan adı üzerinde çalışır.
- Bu kurulumda yeni bir proxy sunucusu gerekmez.
- Bu kurulumda ikinci bir proxy alan adı gerekmez.
Kurulum tamamlandıktan sonra aşağıdaki kontrolleri yapabilirsiniz:
- Web konsol bağlantısı açılabiliyor olmalıdır.
- Proxy alan adınız tarayıcıdan düzgün açılıyor olmalıdır ve ssl tanımlandığını görmelisiniz.