以前の記事でnginxのIPv6対応を書いた。
しかし、設定上、
ipv6only=on
という記述は、1度しか書けないため、
virtualhostで複数運用している場合に、この設定は邪魔となる。
virtualhostで運用する場合が多いので、
最終的には以下のようにすればよいのではないだろうか。
/etc/nginx/nginx.conf
http {
:
:
# serverディレクティブは書かない
include /etc/nginx/conf.d/*.conf;
}
/etc/nginx/conf.d/default.conf
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
:
:
/etc/nginx/conf.d/your-ssl-vh.conf
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
server_name your-ssl-vh;
ssl_certificate /etc/pki/tls/certs/server.crt;
ssl_certificate_key /etc/pki/tls/certs/server.key;
:
:
このように記載しておくと、your-ssl-vhホストでは、
ipv4、v6の、non-sslまたはsslでのlistenとなる。
non-sslサイトを生きにしつつ、sslも併用し、
念のためipv6対応も入れたいというケースはこのような対応となるだろう。
以上