내 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.
이 옵션이 사용되는 listen
IPv4 및 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;
...
이제 이 구성은 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월에 수정됨이 풀 요청. 따라서 템플릿이나 업그레이드 모듈에서 이를 제거할 수 있습니다.