nginx 설정을 여러 줄로 나누는 방법은 무엇입니까?


13

특히 HPKP 헤더 (또는 일반적으로 다른 긴 헤더)를 구성 할 때 nginx 구성의 라인을 여러 라인으로 분할하는 것이 유용합니다.

원하는 결과입니다.

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

그러나 브라우저의 경우 한 줄만 있어야합니다.

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

그래서 몇 가지 시도했지만 결과에 만족하지 않습니다 ...

첫 번째 시도 : 그냥 나누십시오

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

이것은 작동하지만 curl브라우저가 모든 줄 바꿈으로 헤더를 수신한다는 것을 알 수 있습니다 ...

두 번째 시도 : 백 슬래시

실제로 이미 링크 된 기사에서 Scott Helme는 다음을 권장합니다.

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

그러나 제 경우에는 슬래시를 추가하고 브라우저로 반환했기 때문에 작동하지 않습니다.

어떻게해야합니까?

보너스

물론 모든 라인에 대한 의견은 멋진 추가 일 것입니다 :

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 또는 Perl 모듈을 사용할 수 있습니까?
Alexey Ten

뭐? 어떻게해야합니까? 그러나 그 외에도 nginx 구성 파일에서 직접이 솔루션을 원합니다. 나는 구성 지시문에 여러 줄을 사용할 수있는 특별한 요청이 아니라는 것을 의미합니다 ... 적어도 이것이 내가하는 것입니다.
rugk 2016 년

이것은 여전히 ​​구성 파일에있을 수 있습니다. nginx가 이러한 모듈 중 하나를 사용하여 컴파일 된 경우 문제입니다.
Alexey Ten

현재 nginx에 의해 컴파일 된 기본 모듈 세트에 있지 않는 한,이 모듈들로 컴파일되지 않았지만, 그러한 모듈로 버전을 확실히 컴파일 할 수있었습니다 ...이 "문제"를 해결하는 데 도움이된다면 ...
rugk

답변:


8

다음과 같은 변수 중첩을 고려해야 할 수도 있습니다.

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;

그것은 참으로 좋은 생각이며 효과가 있습니다. 더 많은 해결 방법이지만 확실히 할 수있는 방법입니다.
rugk

서버 {}에 넣었을 때 : nginx : [emerg] 예기치 않은 "s"
Atombit

0

;세퍼레이터이고

그래서 당신은 여러 줄에 물건을 넣을 수 있습니다. ;


그것이 내가 First try: Just split it올바르게 이해하면 시도한 것입니다. 문제는 클라이언트가 모든 줄 바꿈과 함께 헤더를 받았다는 것입니다.
rugk

당신의 유일한 희망은 모든 것을 한 줄에 두는 것입니다. 귀찮게한다면 에디터가 줄 바꿈하도록하세요
MrE
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.