Bagaimana cara membagi nginx config di beberapa baris?


13

Terutama ketika mengkonfigurasi tajuk HPKP (atau tajuk panjang lainnya pada umumnya) akan berguna untuk membagi sebuah garis dalam konfigurasi nginx melalui beberapa baris.

Ini adalah hasil yang diinginkan:

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

Namun untuk peramban hanya satu baris:

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

Jadi saya sudah mencoba beberapa hal, tapi saya tidak puas dengan hasilnya ...

Coba pertama: Hanya membaginya

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=";
'

Ini berfungsi, tetapi dengan curlsaya dapat melihat bahwa browser menerima header dengan semua jeda baris ...

Percobaan kedua: Backslash

Sebenarnya dalam artikel yang sudah ditautkan Scott Helme merekomendasikan ini:

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="; \
'

Namun dalam kasus saya ini hanya menambahkan garis miring dan juga mengembalikannya ke browser, jadi ini tidak berfungsi.

Jadi bagaimana saya bisa melakukan ini?

Bonus

Tentu saja komentar untuk setiap baris akan menjadi tambahan yang luar biasa:

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
Bisa menggunakan modul Lua atau Perl?
Alexey Ten

Apa? Bagaimana saya bisa melakukan itu? Tapi selain itu saya lebih suka solusi untuk ini di file konfigurasi nginx secara langsung. Maksud saya bukan permintaan yang luar biasa untuk dapat menggunakan banyak baris untuk perintah konfigurasi ... setidaknya inilah yang saya pikirkan.
rugk

Ini masih bisa di file konfigurasi Anda. Ini hanya pertanyaan jika nginx Anda dikompilasi dengan salah satu modul ini diaktifkan.
Alexey Ten

Saat ini tidak dikompilasi dengan modul-modul ini (kecuali mereka berada di set modul standar yang dikompilasi oleh nginx), tapi saya pasti bisa mengkompilasi versi dengan modul seperti itu ... Jika itu membantu untuk menyelesaikan "masalah" ini.
rugk

Jawaban:


8

Anda mungkin perlu mempertimbangkan variabel nesting yang akan terlihat seperti ini:

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;

Itu memang ide yang bagus dan berhasil. Ini lebih merupakan solusi, tetapi tentu saja cara untuk melakukannya.
rugk

ketika saya memasukkannya ke server {} saya mendapat: nginx: [emerg] "s" tak terduga
Atombit

0

itu ;adalah pemisah

sehingga Anda dapat meletakkan berbagai hal pada banyak baris, akhiri saja baris terakhir hanya dengan ;


Itulah yang saya coba First try: Just split itjika saya memahaminya dengan benar. Masalahnya di sana adalah bahwa klien menerima header dengan semua jeda baris.
rugk

maka satu-satunya harapan Anda adalah meletakkan segala sesuatu pada satu baris. biarkan editor Anda membungkus jika itu mengganggu Anda
MrE
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.