Puppet nginx 모듈에서 "ipv6only" 옵션 제거

Puppet nginx 모듈에서 "ipv6only" 옵션 제거

내 nginx 서버(여러 가상 호스트 제공)를 시작할 수 없습니다.

Nov 08 23:54:43 foo systemd[1]: Starting nginx - high performance web server...
Nov 08 23:54:43 foo nginx[3830]: nginx: [emerg] duplicate listen options for [::]:8081 in /etc/nginx/sites-enabled/000-mysite.vhost:3
Nov 08 23:54:43 foo nginx[3830]: nginx: configuration file /etc/nginx/nginx.conf test failed
Nov 08 23:54:43 foo systemd[1]: nginx.service: control process exited, code=exited status=1
Nov 08 23:54:43 foo systemd[1]: Failed to start nginx - high performance web server.
Nov 08 23:54:43 foo systemd[1]: Unit nginx.service entered failed state.
Nov 08 23:54:43 foo systemd[1]: nginx.service failed.

이 옵션이 사용되는 listenIPv4 및 IPv6에 대해 동일한 TCP 포트에 바인딩하는 두 개의 지시문 에 문제가 있다고 확인했습니다 .ipv6only

[root@foo ~]# head /etc/nginx/sites-enabled/mysite.vhost 
server {
        listen 8081;
        listen [::]:8081 ipv6only=on;  
        ssl off;
...

따라서 이 구성은 제대로 작동합니다.

[root@foo ~]# head /etc/nginx/sites-enabled/mysite.vhost 
server {
        listen 8081;
        listen [::]:8081;  
        ssl off;
...

[관련 질문:https://serverfault.com/questions/638367/do-you-need-separate-ipv4-and-ipv6-listen-directives-in-nginx]

이제 이 구성은 Puppet에서 다음을 통해 사용됩니다.꼭두각시-nginx 모듈. options 을 지정하지 않거나 ipv6only문제를 해결하는 방법(Puppet을 통해)이 있습니까 ?

답변1

나는 당신의 인형 부분이 어떻게 생겼는지 알 수 없습니다. 어쨌든 puppet-nginx 모듈에는 resources 가 있으므로 nginx::resource::vhost어떤 방식으로든 사용하게 될 것 같습니다. 이 리소스에는 다음 ipv6_listen_options과 같은 옵션이 있습니다.기본적으로 ipv6only=on을 포함합니다.. 따라서 다음과 같이 호출할 수 있어야 합니다.

nginx::resource::vhost { 'example.com':
    ipv6_listen_options => '',
    # another options there
}

ipv6only=on또 다른 가능성은 템플릿에 하드코딩 된 이전 모듈을 사용하고 있다는 것입니다 . 2월에 수정됨이 풀 요청. 따라서 템플릿이나 업그레이드 모듈에서 이를 제거할 수 있습니다.

관련 정보