Bir alt dizin hariç tüm istekleri HTTPS'ye yönlendir


14

Kendim imzalı sertifikalardan nginx web sunucumdaki Sertifikaları Şifrelemeye geçmeye çalışıyorum.

Şu anda, tüm istekleri yönlendirmek http/80için https/443bir süre önce oluşturulan bir öz imzalı sertifika kullanan,.

Şimdi - anladığım kadarıyla Let's Encrypt (bağlantı noktası 80) için bir istekte bulunur ( webrootseçeneğini kullanıyorum gibi certbot). Bu istekler yeniden yönlendirilir, bu da sertifika oluşturmayı başarısız kılar.

Bunu, 80 numaralı bağlantı noktasını dinleyerek aşağıdaki sunucu bloğu ile gerçekleştirmeye çalıştım:

server {
        listen  80;     
        server_name     sub.domain.tld;
        server_tokens   off;


        location /.well-known {
                root /var/www/letsencrypt;
        }

        location / {
                return 301 https://$host$request_uri;
        }
}

Ancak istekler yine /.well-knownde yönlendirilir https/443.

Nasıl gelen tüm istekleri yönlendirebilirsiniz http/80için https/443istekleri dışında /.well-known/?


1
Bildiğim kadarıyla, webrootof certbotseçeneği düz http gerektirir.
SaAtomic

2
Yönlendirmeyi nasıl kontrol ettiniz? Sanırım tarayıcınız sizin alan adınız için HSTS başlıklarına saygı duyuyor, ancak botu şifreleyelim. İle kontrol wget/curl
Alexey TEN

Yanıtlar:


18

Bunu dene:

server {
    listen  80;     
    server_name     sub.domain.tld;
    server_tokens   off;

    root /var/www/letsencrypt;

    location /.well-known {
        try_files $uri $uri/ =404;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

try_filesSanal sunucunuzda herhangi bir girdi olmadığından, gelen isteklerle ne yapılacağını bilmiyordu /.well-known.


2
locationolmadan try_filessadece dosyayı gönderir rootdizine.
Alexey On

1
garip, ben tam olarak aynı durum var ve kullanmıyorum try_filesve benim için mükemmel çalışıyor. Aslında soruda belirtilenle aynı yapılandırmaya sahibim. location /.well-known/Bunun yerine tek fark location /.well-known(eğik çizgiyi not edin). Belki de sorunun nerede olduğu budur?
Olle Kelderman
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.