Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud DNS:Self-managed Nginx: HTTPS forwarding and port mapping

Son Güncelleme:Oct 04, 2026

Bir ECS örneği üzerinde çalışan Nginx ters proxy, Alibaba Cloud DNS'in yerel olarak desteklemediği iki özelliği sunar: HTTPS URL yönlendirmesi ve bağlantı noktası eşleme. Standart senaryolar için bunun yerine DNS kaydı ekleyin.

Kullanım durumları

Alibaba Cloud DNS şu sınırlamalara sahiptir:

  • Protokol kısıtlaması: DNS hizmeti SSL sertifikalarını yönetemediğinden HTTPS üzerinden HTTPS URL yönlendirmesi desteklenmez.

  • Bağlantı noktası sınırlaması: DNS, alan adlarını IP adreslerine çözümler; bağlantı noktalarına değil. Arka uç uygulamanız standart olmayan bir bağlantı noktasında (örneğin 3000) çalışıyorsa kullanıcıların URL'ye bağlantı noktasını eklemesi gerekir: http://www.example.com:3000.

Çözüm mimarisi

image
  • Orijinal yol: İstemci, alan adını DNS aracılığıyla çözümler ve doğrudan arka uç hizmetinin IP adresine bağlanır.

  • Yeni yol: Nginx ters proxy ile istekler aşağıdaki yolu izler:

    1. İstemci, alan adını DNS aracılığıyla çözümler ve DNS Nginx sunucusunun genel IP adresini döndürür.

    2. İstemci, bu genel IP adresine HTTP veya HTTPS isteği gönderir.

    3. Nginx, Host başlığını yönlendirme kurallarıyla eşleştirir ve isteği uygun arka uç hizmetine iletir.

    4. Arka uç isteği işler ve yanıtı Nginx üzerinden istemciye döndürür.

Yordam

Bu öğreticide Alibaba Cloud Linux 3 çalıştıran bir ECS örneği kullanılmaktadır. Nginx zaten dağıtılmışsa doğrudan 3. Adım: Farklı senaryolar için Nginx'i yapılandırın bölümüne geçin.

1. Adım: ECS ortamını hazırlayın

  1. Bir ECS örneği oluşturun. Sihirbazı kullanarak örnek oluşturun.

    • İşletim sistemi: Alibaba Cloud Linux 3'ü seçin.

    • Ağ: Örneğe bir genel IP adresi atayın.

  2. Güvenlik grubu gelen kuralı ekleyerek TCP protokolünde 22, 80 ve 443 bağlantı noktalarına izin verin.

2. Adım: Nginx'i yükleyin ve başlatın

  1. SSH istemcisini kullanarak ECS örneğinde oturum açın.

  2. Nginx'i yüklemek için aşağıdaki komutu çalıştırın.

    sudo yum install -y nginx
  3. Nginx'i başlatın ve önyüklemede otomatik olarak başlamasını etkinleştirin.

    sudo systemctl start nginx
    sudo systemctl enable nginx
  4. Nginx'in çalıştığını doğrulayın.

    sudo systemctl status nginx

    Durum active (running) ise hizmet başarıyla başlatılmış demektir.

  5. Bağlantıları kesmeden Nginx yapılandırmasını yeniden yükleyin.

    sudo systemctl reload nginx

3. Adım: Farklı senaryolar için Nginx'i yapılandırın

Ana yapılandırma dosyası /etc/nginx/nginx.conf dosyasıdır. Önerilen yaklaşım, her site için /etc/nginx/conf.d/ dizinine ayrı bir .conf dosyası oluşturmaktır.

Senaryo 1: HTTPS URL yönlendirmesi

SSL sertifikaları yüklenemediğinden Alibaba Cloud DNS, HTTPS'den HTTPS'ye yönlendirmeyi desteklemez. Nginx ile kendi SSL sertifikanızı yükleyebilir ve özel yönlendirme kuralları tanımlayabilirsiniz.

  • URL yeniden yönlendirmesi (açık yönlendirme)

    https://example.com adresini https://aliyun.com adresine kalıcı olarak yönlendirir. Tarayıcının adres çubuğu yeni URL'yi gösterecek şekilde güncellenir. Aşağıdaki içeriği /etc/nginx/conf.d/redirect.conf dosyasına ekleyin:

    server {
        listen 443 ssl http2;
        server_name example.com;
    
        # Configure the SSL certificate and private key for the source domain name
        ssl_certificate /etc/nginx/certs/example.com.fullchain.pem;
        ssl_certificate_key /etc/nginx/certs/example.com.key;
    
        location / {
            return 301 https://aliyun.com$request_uri;
        }
    }
  • Ters proxy (örtük yönlendirme)

    https://example.com adresine gelen istekleri https://aliyun.com adresine iletir. İçerik arka uçtan sunulurken tarayıcının adres çubuğu değişmez. Aşağıdaki içeriği /etc/nginx/conf.d/proxy.conf dosyasına ekleyin:

    # Proxy requests for example.com to aliyun.com
    server {
        listen 443 ssl http2;
        server_name example.com;
    
        # Configure the SSL certificate and private key for the source domain name
        ssl_certificate /etc/nginx/certs/example.com.fullchain.pem;
        ssl_certificate_key /etc/nginx/certs/example.com.key;
    
        location / {
            # Forward the request to the target server
            proxy_pass http://aliyun.com;
    
            # Key configuration: Set the Host request header to the target service's domain name to ensure the backend can process the request correctly.
            proxy_set_header Host "aliyun.com";
            
            # Pass the client's real IP address for backend logging and analysis
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    

Senaryo 2: Alan adını belirli bir bağlantı noktasına eşleyin

Trafiki 80. bağlantı noktasından 3000 gibi standart olmayan bir bağlantı noktasındaki arka uç uygulamasına yönlendirir; böylece kullanıcıların URL'de bağlantı noktasını belirtmesine gerek kalmaz. Aşağıdaki içeriği /etc/nginx/conf.d/port_mapping.conf dosyasına ekleyin:

# Access the service on local port 3000 through example.com
server {
    listen 80;
    server_name example.com;

    location / {
        # Forward requests to port 3000 on the local host
        proxy_pass http://127.0.0.1:3000;

        # Pass the original Host request header so the backend application can identify the domain name being accessed
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

4. Adım: DNS çözümlemesini yapılandırın

Nginx yapılandırıldıktan sonra hizmet verdiği alan adları için DNS kayıtları ekleyin.

  1. Bir alan adı edinin. Mevcut bir alan adınız yoksa Alibaba Cloud Domain Names üzerinden kayıt yaptırın. Web sitesi Çin anakarasında barındırılıyorsa öncelikle ICP başvurusunu tamamlayın.

  2. Nginx çalıştıran ECS örneğinin genel IP adresini alın.

    ECS konsolundaki Instances sayfasında örneğinizi bulun ve IP Address sütununu kontrol edin.

  3. Alibaba Cloud DNS - Public Zone konsoluna gidin ve hedef alan adınızı bulun.

  4. Bir DNS kaydı ekleyin veya mevcut olanı değiştirin.

    1. DNS kaydı yapılandırılmamışsa DNS kaydı ekleyin. Nginx'te yapılandırılan her alan adı (örneğin example.com) için bir A kaydı oluşturun ve bu kaydı ECS örneğinizin genel IP adresine işaret edin.

    2. DNS kaydı zaten varsa değerini Nginx sunucusunun genel IP adresiyle güncelleyin. DNS değişikliklerinin yayılması 5–10 dakika sürebilir.

      Add Record panelinde record type alanını A -- Maps a domain name to an IPv4 address, host record alanını demo, Resolution Line alanını Default, TTL alanını 10 minutes ve record value alanını Nginx sunucusunun genel IP adresi olarak ayarlayın.

Maliyetler ve riskler

  • Maliyet: Asıl maliyet ECS örneğidir. Fiyatlandırma; örnek teknik özelliklerine, bölgeye ve faturalama yöntemine göre değişir. Nginx ücretsiz ve açık kaynaklıdır.

  • Riskler ve bakım: Ters proxy'nin işletilmesi, güvenlik yamalarının uygulanması, hizmet sağlığının izlenmesi ve yapılandırmaların yedeklenmesi sizin sorumluluğunuzdadır. Hatalı kurulum veya ihmal edilen bakım, kesintilere veya güvenlik açıklarına neden olabilir.

  • Üretim ortamı önerisi: Nginx güvenlik yapılandırmasını sıkılaştırın ve izleme ile günlük analizi ayarlayın.

SSS

Alibaba Cloud DNS bağlantı noktası çözümlemesini destekler mi?

Bir alan adını başka bir web sitesine nasıl yönlendiririm?