Nginx yapılandırmasını birden çok satıra nasıl bölerim?


13

Özellikle HPKP üstbilgisini (veya genel olarak diğer uzun üstbilgileri) yapılandırırken, bir nginx yapılandırmasındaki bir satırı birden çok satıra bölmek yararlı olacaktır.

İstenen sonuç budur:

pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg=";
pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec="; 
pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg="; 
pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg="; 
pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo="; 
pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g=";

Ancak tarayıcı için sadece bir satır olmalıdır:

pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg="; pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec="; pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg="; pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg="; pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo="; pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g=";

Bu yüzden bazı şeyleri denedim, ama sonuçlardan memnun değilim ...

İlk deneme: Sadece bölün

add_header Public-Key-Pins '
pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg=";
pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec=";
pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg=";
pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg=";
pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo=";
pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g=";
'

Bu işe yarıyor, ancak curlgörebiliyorum ki tarayıcılar tüm satır sonları ile başlığı alıyor ...

İkinci deneme: Ters eğik çizgi

Aslında zaten bağlantılı makalede Scott Helme bunu tavsiye ediyor:

add_header Public-Key-Pins ' \
pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg="; \
pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec="; \
pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg="; \
pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg="; \
pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo="; \
pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g="; \
'

Ancak benim durumumda bu sadece eğik çizgileri ekledi ve ayrıca tarayıcıya döndürdü, bu yüzden bu işe yaramaz.

Peki bunu nasıl yapabilirim?

Bonus

Tabii ki her satır için yorumlar harika bir ek olacaktır:

pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg="; # current ECDSA
pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec="; # current RSA (nginx 1.11.0)
pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg="; # backup ECDSA 1
pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg="; # backup ECDSA 2
pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo="; # backup RSA 1
pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g="; # backup RSA 2

1
Lua veya Perl modülünü kullanabilir miyim?
Alexey On

Ne? Bunu nasıl yapabilirim? Ama bunun yanında doğrudan nginx yapılandırma dosyasında bunun için bir çözüm istiyorum. Yani bir yapılandırma yönergesi için birden çok satır kullanabilmek olağanüstü bir istek değil demek istiyorum ... en azından ben de öyle.
rugk

Bu hala yapılandırma dosyanızda olabilir. Bu sadece nginx'inizin bu modüllerden biri etkinken derlenmiş olup olmadığı sorusudur.
Alexey Ten

Şu anda bu modüller ile derlenmemiştir (nginx tarafından derlenen varsayılan modüller kümesinde olmadıkları sürece), ancak kesinlikle böyle bir modülle bir sürüm derleyebilirim ... Eğer bu "sorunu" çözmeye yardımcı olursa.
rugk

Yanıtlar:


8

Bunun gibi bir şey görecek değişken iç içe yerleştirmeyi düşünmeniz gerekebilir:

set $PKP '';
set $PKP '${PKP}pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg=";'; # current ECDSA
set $PKP '${PKP}pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec=";'; # current RSA (nginx 1.11.0)
set $PKP '${PKP}pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg=";';  # Backup ECDSA 1
set $PKP '${PKP}pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg=";';  # Backup ECDSA 2
set $PKP '${PKP}pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo=";'; # backup RSA 1
set $PKP '${PKP}pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g=";';  # Backup RSA 2

add_header Public-Key-Pins $PKP;

Bu gerçekten iyi bir fikir ve işe yarıyor. Bu daha çok bir çözüm, ama kesinlikle bunu yapmanın bir yolu.
rugk

sunucuya koyduğumda {} anladım: nginx: [ortaya çıktı] beklenmedik "s"
Atombit

0

;separatörüdür

böylece işleri birden çok satıra koyabilirsiniz, son satırı yalnızca ;


Doğru anlarsam denedim First try: Just split it. Sorun, istemcinin tüm satır sonları ile üstbilgiyi almasıydı.
rugk

o zaman tek umudunuz her şeyi tek bir satıra koymaktır. ederseniz sizi düzenleyicinizin
sarmasına
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.