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ポートにバインドする2つのディレクティブに問題があることを確認しました。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もう1つの可能性は、テンプレートにハードコードされた古いモジュールを使用していることです。 2月に修正されましたこのプールリクエスト。したがって、テンプレートまたはアップグレードモジュールからそれらを削除できます。

おすすめ記事