私の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ポートにバインドする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;
...
これで、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月に修正されましたこのプールリクエスト。したがって、テンプレートまたはアップグレードモジュールからそれらを削除できます。