カテゴリー「nginx」

以前の記事で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対応も入れたいというケースはこのような対応となるだろう。

 

以上

投稿日時:2016年10月16日 23:52   カテゴリー:nginx, server   [コメントがあればどうぞ]

当サイトはhttpサーバとして、

nginxで運用しているのだが、

nginxをipv4とipv6のハイブリット運用に変更したので、

メモを残す。

 

nginx.conf

user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
  worker_connections 1024;
  multi_accept on;
  use epoll;
}

http {
  server_tokens off;
  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;

  keepalive_timeout 10;
  client_header_timeout 10;
  client_body_timeout 10;
  reset_timedout_connection on;

  send_timeout 10;
  include /etc/nginx/mime.types;
  default_type application/octet-stream;
  charset UTF-8;

  server {
    listen 80;
    listen [::]:80 ipv6only=on;
  }
  include /etc/nginx/conf.d/*.conf;
}

 

そして、一部sslサイトがあるので、

ssl側は以下のようにする。

※httpでアクセスしてきたときのリダイレクトも入れている

 

server {
  server_name  example.com;
  return 301 https://$host$request_uri;
}

server {
  listen 443;
  listen [::]:443 ipv6only=on ssl;

  ssl on;
  ssl_certificate /etc/pki/tls/certs/server.crt;
  ssl_certificate_key /etc/pki/tls/certs/server.key;

  server_name example.com;
  :
  :
}

 

netstatの結果、

nginxがipv4の80と443、ipv6の80と443で待ち受けていることがわかる。

# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      27124/nginx: master
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      27124/nginx: master
tcp6       0      0 :::443                  :::*                    LISTEN      27124/nginx: master
tcp6       0      0 :::80                   :::*                    LISTEN      27124/nginx: master

 

ちなみに、centos7で、nginxのバージョンは1.6.3です。

投稿日時:2015年12月07日 14:22   カテゴリー:nginx   [コメントがあればどうぞ]