Làm cách nào để phân chia cấu hình nginx trên nhiều dòng?


13

Đặc biệt là khi định cấu hình tiêu đề HPKP (hoặc các tiêu đề dài khác nói chung) sẽ rất hữu ích khi chia một dòng trong cấu hình nginx trên nhiều dòng.

Đây là kết quả mong muốn:

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

Tuy nhiên, đối với trình duyệt, nó chỉ nên là một dòng:

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

Vì vậy, tôi đã thử một số thứ, nhưng tôi không hài lòng với kết quả ...

Lần thử đầu tiên: Chỉ cần tách nó ra

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

Điều này hoạt động, nhưng với curltôi có thể thấy rằng các trình duyệt nhận được tiêu đề với tất cả các ngắt dòng ...

Lần thử thứ hai: Dấu gạch chéo ngược

Trên thực tế trong bài viết đã được liên kết Scott Helme khuyến nghị điều này:

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

Tuy nhiên trong trường hợp của tôi, điều này chỉ thêm các dấu gạch chéo và cũng trả lại chúng cho trình duyệt, vì vậy điều này không hoạt động.

Vì vậy, làm thế nào tôi có thể làm điều này?

Tặng kem

Tất nhiên ý kiến ​​cho mỗi dòng sẽ là một bổ sung tuyệt vời:

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
Có thể sử dụng mô-đun Lua hoặc Perl?
Alexey Ten

Gì? Làm thế nào tôi có thể làm điều đó? Nhưng bên cạnh đó tôi muốn có một giải pháp cho việc này trong tập tin cấu hình nginx trực tiếp. Ý tôi là đó không phải là một yêu cầu phi thường như vậy để có thể sử dụng nhiều dòng cho một chỉ thị cấu hình ... ít nhất đây là những gì tôi nghĩ.
rugk

Điều này vẫn có thể trong tập tin cấu hình của bạn. Đó chỉ là một câu hỏi nếu nginx của bạn được biên dịch với một trong những mô-đun được kích hoạt.
Alexey Ten

Hiện tại nó không được biên dịch với các mô-đun này (trừ khi chúng nằm trong bộ mô-đun mặc định do nginx biên dịch), nhưng tôi chắc chắn có thể biên dịch một phiên bản với mô-đun như vậy ... Nếu nó giúp giải quyết "vấn đề" này.
tấm thảm

Câu trả lời:


8

Bạn có thể cần phải xem xét lồng nhau biến sẽ trông giống như thế này:

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;

Đó thực sự là một ý tưởng tốt và nó hoạt động. Đó là một cách giải quyết hơn, nhưng đó chắc chắn là một cách để làm điều đó.
rugk

khi tôi đặt nó vào máy chủ {} Tôi nhận được: nginx: [nổi lên] "s" bất ngờ
Atombit

0

những ;là tách

để bạn có thể đặt mọi thứ trên nhiều dòng, chỉ kết thúc dòng cuối cùng với ;


Đó là những gì tôi đã cố gắng First try: Just split itnếu tôi hiểu đúng. Vấn đề ở đây là khách hàng đã nhận được tiêu đề với tất cả các ngắt dòng.
rugk

sau đó hy vọng duy nhất của bạn là đặt mọi thứ trên một dòng. hãy để trình soạn thảo của bạn bao bọc nếu điều đó làm phiền bạn
MrE
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.