Standart olmayan bağlantı noktasında nginx SSL nasıl çalıştırılır


16

Bunun en az birkaç başka sorunun kopyası gibi göründüğünü fark ettim, ama her birini birkaç kez okudum ve hala yanlış bir şey yapıyorum.

Aşağıda yer alan myexample.com nginx yapılandırma dosyasının içeriği aşağıdadır /etc/nginx/sites-available.

server {

  listen       443 ssl;
  listen       [::]:443 ssl;

  server_name myexample.com www.myexample.com;
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
  ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;

  #Configures the publicly served root directory
  #Configures the index file to be served
  root /var/www/myexample.com;
      index index.html index.htm;

}

Çalışır, https://myexample.com adresine gittiğimde içerik sunulur ve bağlantı güvenlidir. Yani bu yapılandırma iyi görünüyor.

Şimdi ssl bağlantı noktasını 9443 olarak değiştirir ve nginx yapılandırmasını yeniden yüklersem, yapılandırma hatasız yeniden yüklenir, ancak https://myexample.com adresini ziyaret etmek tarayıcıda bir hata gösterir (Bu siteye ulaşılamıyor / myexample.com reddedildi bağlanın. ERR_CONNECTION_REFUSED)

Burada , burada ve burada (diğerleri arasında) öneriler ve belgeler denedim , ancak her zaman ERR_CONNECTION_REFUSED hatası alıyorum.

Standart olmayan bir bağlantı noktası kullanabileceğimi ve daha sonra açıkça bu bağlantı noktasını URL'ye yazabileceğimi not etmeliyim, örneğin, https://myexample.com:9443 . Ama bunu yapmak istemiyorum. İstediğim, bir kullanıcının herhangi bir tarayıcıya myexample.com yazabilmesi ve nginx'in güvenli bağlantıya otomatik olarak yönlendirmesini sağlamaktır.

Yine, standart 443 SSL bağlantı noktasını kullandığımda hiçbir sorunum yok.

Edit: Ben debian / jessie üzerinde nginx / 1.6.2 kullanıyorum


1
"Standart olmayan bir bağlantı noktası kullanabileceğimi ve daha sonra bu bağlantı noktasını URL'ye açıkça yazabileceğimi belirtmeliyim, örn., myexample.com:9443 ". Bunu nasıl yapabildiğinizi açıklayabilir misiniz, çünkü SSL dahil " myexample.com:9443 " gibi bir ifadeyi kullanarak web siteme erişmek istiyorum
Ghassan Zein

Yanıtlar:


23

Tarayıcınıza " https://myexample.com " yazmayı venginx 9443 numaralı bağlantı noktasında dinleme tarafından yapılandırılmasını destekleyebilmek için, 443 numaralı bağlantı noktasını hala dinleyen ek bir nginxyapılandırmaya ihtiyacınız olacaktır . hangi tarayıcı bağlanır .

Böylece:

server {
  listen 443 ssl;
  listen [::]:443 ssl;

  server_name myexample.com www.myexample.com;
  ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;

  # Redirect the browser to our port 9443 config
  return 301 $scheme://myexample.com:9443$request_uri;
}

server {
  listen 9443 ssl;
  listen [::]:9443 ssl;

  server_name myexample.com www.myexample.com;
  ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

  #Configures the publicly served root directory
  #Configures the index file to be served
  root /var/www/myexample.com;
  index index.html index.htm;
}

Her iki bölüm için de aynı sertifika / anahtarın gerekli olduğuna dikkat edin, çünkü sertifika genellikle DNS ana bilgisayar adına bağlıdır, ancak bağlantı noktası zorunlu değildir.

Bu yardımcı olur umarım!


Bu en eksiksiz cevaptır, ancak bana söylediğiniz şey, güvenli bir bağlantıya otomatik olarak yönlendirmek için nginx'in 443 numaralı bağlantı noktasına bağlı olması gerektiğidir. Sorun bu :-( O limana bağlı başka bir
işlemim daha var

Nginx ters bir proxy'dir. 443'ü dinlemesini ve istekleri uygun uygulamaya iletmesini sağlayabilirsiniz.
Tim

Tim - haklısın. Muhtemelen gerçek bir aptalca soru sordum ama SSL portunu "sihirli bir şekilde" değiştirmenin bir yolu olduğunu umuyordum.
GojiraDeMonstah

@GojiraDeMonstah 443 numaralı bağlantı noktasını kullanmak istemiyorsanız, seçtiğiniz bağlantı noktası numarasını URL'ye koyarsınız. Hepsi bu.
Michael Hampton

"SSL" oldukça önemliydi. Daha önce default_server vardı ve bir süre onunla mücadele ettim.
swateek

0

Eğer yazdığınızda https://example.com https için standart: // düzeni, bunu sunucunuzu taşındı şimdi port 9443. dinlediği Sen olsun Senin durumunda 443 numaralı bağlantı noktasına bağlayacak bağlantı reddedildi Bu nedenle mesaj - 443 numaralı bağlantı noktasında hiçbir şey dinlemiyor.

Bağlantıları 443 numaralı bağlantı noktasında, bağlantıları 9443 numaralı bağlantı noktasına yönlendiren veya URL'nin bir parçası olarak bir bağlantı noktası kullanan bir şeyler dinlemeniz gerekir.


-1

bağlantı noktasını 9443 gibi standart olmayan bir bağlantı noktasına değiştirirseniz, 443'ten 9443'e yeniden yönlendirme eklemeniz gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.