nginx/ja

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Nginx and the translation is 58% complete.

Outdated translations are marked like this.
Other languages:
Deutsch • ‎English • ‎Türkçe • ‎español • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어

Warning: Display title "nginx/ja" overrides earlier display title "Nginx".

nginx は強固で小さく高性能なウェブサーバ / リバースプロキシサーバです。Apachelighttpd と同様に支持されているウェブサーバとして良い選択肢です。

インストール

www-servers/nginx パッケージのインストールを始める前に、まずはNginx向けの適切なUSEフラグを設定します。

Expanded USE flags

Nginxはモジュールによって機能が拡張されます。このモジュールによるアプローチの管理をより簡潔にするために、nginxのebuildではexpanded USE (USE_EXPAND) flagsを用い、どのモジュールをインストールするか指定されます。

  • HTTP に関連するモジュールは NGINX_MODULES_HTTP 変数を介して有効化できます。
  • メールに関連するモジュールは NGINX_MODULES_MAIL 変数を介して有効化できます。
  • サードパーティモジュールは NGINX_ADD_MODULES 変数を介して有効化できます。

これらの変数は/etc/portage/make.confに設定する必要があります。詳しい解説は /var/db/repos/gentoo/profiles/desc/nginx_modules_http.desc/var/db/repos/gentoo/profiles/desc/nginx_modules_mail.desc にあります。

例えば、fastcgiモジュールを有効にするには:

FILE /etc/portage/make.conf
NGINX_MODULES_HTTP="fastcgi"

上記の設定は NGINX_MODULES_HTTP のデフォルト値を上書きして fastcgi に設定します。デフォルトの NGINX_MODULES_HTTP 値を上書きせずに fastcgi モジュールを有効化するには、次の USE フラグ記述を /etc/portage/package.use に指定することで行えます:

FILE /etc/portage/package.use
www-servers/nginx NGINX_MODULES_HTTP: fastcgi

USE フラグ

USE flags for www-servers/nginx Robust, small and high performance http and reverse proxy server

aio Enables file AIO support
http Enable HTTP core support
http-cache Enable HTTP cache support
http2 Enable HTTP2 module support
libatomic Use libatomic instead of builtin atomic operations
luajit Use dev-lang/luajit instead of dev-lang/lua for lua support when building the lua http module.
pcre-jit Enable JIT for pcre
rtmp NGINX-based Media Streaming Server
ssl Enable HTTPS module for http. Enable SSL/TLS support for POP3/IMAP/SMTP for mail.
vim-syntax Pulls in related vim syntax scripts

Emerge

USE フラグを設定したら、www-servers/nginx をインストールします:

root #emerge --ask www-servers/nginx

インストールを確認する

デフォルトの nginx 設定は /var/www/localhost/htdocs をルートディレクトリとして設定したバーチャルサーバを定義しています。しかし bug #449136 のため、nginx ebuild は /var/www/localhost ディレクトリのみ作成し、インデックスファイルを作成しません。デフォルト設定を動作させるには、/var/www/localhost/htdocs ディレクトリと簡単なインデックスファイルを作成してください:

root #mkdir /var/www/localhost/htdocs
root #echo 'Hello, world!' > /var/www/localhost/htdocs/index.html

nginxパッケージはinitサービススクリプトをインストールし、それを使ってシステム管理者はnginxを停止、起動、及び再起動することができます。nginxサービスを起動するには次のコマンドを実行します:

root #/etc/init.d/nginx start

nginx が正常に動作しているか確認するには、ブラウザで http://localhost にアクセスするか、コマンドライン上で動く curl などを使います:

user $curl http://localhost

設定

nginxの設定は/etc/nginx/nginx.confファイルを通して行います。

単一サイト利用

以下は、(PHPのような)ダイナミック生成を用いない単一サイト利用の例です。

FILE /etc/nginx/nginx.confGentooのデフォルト設定
user nginx nginx;
worker_processes 1;
 
error_log /var/log/nginx/error_log info;
 
events {
	worker_connections 1024;
	use epoll;
}
 
http {
	include /etc/nginx/mime.types;
	default_type application/octet-stream;
 
	log_format main
		'$remote_addr - $remote_user [$time_local] '
		'"$request" $status $bytes_sent '
		'"$http_referer" "$http_user_agent" '
		'"$gzip_ratio"';
 
	client_header_timeout 10m;
	client_body_timeout 10m;
	send_timeout 10m;
 
	connection_pool_size 256;
	client_header_buffer_size 1k;
	large_client_header_buffers 4 2k;
	request_pool_size 4k;
 
	gzip off;
 
	output_buffers 1 32k;
	postpone_output 1460;
 
	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
 
	keepalive_timeout 75 20;
 
	ignore_invalid_headers on;
 
	index index.html;
 
	server {
		listen 127.0.0.1;
		server_name localhost;
 
		access_log /var/log/nginx/localhost.access_log main;
		error_log /var/log/nginx/localhost.error_log info;
 
		root /var/www/localhost/htdocs;
	}
}

複数サイト利用

複数のファイルに設定を分割する為、includeディレクティブを利用することが可能です:

FILE /etc/nginx/nginx.conf複数サイト設定
user nginx nginx;
worker_processes 1;
 
error_log /var/log/nginx/error_log info;
 
events {
	worker_connections 1024;
	use epoll;
}
 
http {
	include /etc/nginx/mime.types;
	default_type application/octet-stream;
 
	log_format main
		'$remote_addr - $remote_user [$time_local] '
		'"$request" $status $bytes_sent '
		'"$http_referer" "$http_user_agent" '
		'"$gzip_ratio"';
 
	client_header_timeout 10m;
	client_body_timeout 10m;
	send_timeout 10m;
 
	connection_pool_size 256;
	client_header_buffer_size 1k;
	large_client_header_buffers 4 2k;
	request_pool_size 4k;
 
	gzip off;
 
	output_buffers 1 32k;
	postpone_output 1460;
 
	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
 
	keepalive_timeout 75 20;
 
	ignore_invalid_headers on;
 
	index index.html;
 
	include /etc/nginx/conf.d/*.conf;
}
FILE /etc/nginx/conf.d/local.conf単一ホスト
server {
        listen 127.0.0.1;
        server_name localhost;
  
        access_log /var/log/nginx/localhost.access_log main;
        error_log /var/log/nginx/localhost.error_log info;
  
        root /var/www/localhost/htdocs;
}
FILE /etc/nginx/conf.d/local-ssl.conf単一SSLホスト
server {
    listen 443 ssl;
    server_name host.tld;
    ssl_certificate /etc/ssl/nginx/host.tld.pem;
    ssl_certificate_key /etc/ssl/nginx/host.tld.key;
}

PHP サポート

PHPサポートを有効化する為には、次の行をnginxの設定ファイルに追加してください。この例ではnginxとPHPプロセスはUNIXソケットを介して情報を交換します。

FILE /etc/nginx/nginx.confPHPサポートの有効化
...
http {
...
    server { 
    ...
            location ~ \.php$ {
                       # Test for non-existent scripts or throw a 404 error
                       # Without this line, nginx will blindly send any request ending in .php to php-fpm
                       try_files $uri =404;
                       include /etc/nginx/fastcgi.conf;
                       fastcgi_pass unix:/run/php-fpm.socket;
           }
    }
}

このセットアップでは、fpmUSE フラグによって管理されるFastCGI Process Managerサポートと共にビルドされたPHPが必要です:

root #echo "dev-lang/php fpm" >> /etc/portage/package.use

fpm USEフラグを有効にして PHP を再ビルドします:

root #emerge --ask dev-lang/php
Note
ここではUNIXソケット通信を使うことを選びます。これは推奨される設定でもあります

/etc/php/fpm-php5.5/php-fpm.conf コンフィグファイルを再確認して次の行を追加してください:

FILE /etc/php/fpm-php5.5/php-fpm.confUNIXソケットサポートを用いて PHP を稼働させる
listen = /run/php-fpm.socket
listen.owner = nginx

PHP 7.0 以降のコンフィグファイルは少し異なります:

FILE /etc/php/fpm-php7.1/fpm.d/www.confUNIX ソケットサポートを用いて PHP を稼働させる
listen = /run/php-fpm.socket
listen.owner = nginx

php-fpm php.ini ファイルでタイムゾーンを設定してください。下の FileBox 内の <PUT_TIMEZONE_HERE> テキストを適切なタイムゾーン情報に置き換えてください。

FILE /etc/php/fpm-php5.5/php.iniphp.ini のタイムゾーン設定
date.timezone = <PUT_TIMEZONE_HERE>

php-fpm デーモンを開始します:

root #/etc/init.d/php-fpm start

php-fpm を default ランレベルに追加します:

root #rc-update add php-fpm default

変更した設定を使って nginx を再読み込みします:

root #/etc/init.d/nginx reload

IP アドレスのアクセスリスト

次の例は特定の URL(ここでは /nginx_status)へのアクセスを以下からに制限する方法を示しています:

  • 特定のホスト (e.g. 192.0.2.1 127.0.0.1)
  • 特定の IP ネットワーク (e.g. 198.51.100.0/24)
FILE /etc/nginx/nginx.conf/nginx_status ページへの IP アクセスリストを設定し有効化する
http {
    server { 
            location /nginx_status {
                     stub_status on;
                     allow 127.0.0.1/32;
                     allow 192.0.2.1/32;
                     allow 198.51.100.0/24;
                     deny all;
             }
     }
}

ベーシック認証

nginx allows limiting access to resources by validating the user name and password:

FILE /etc/nginx/nginx.confEnabling and configuring user authentication for the / location
http {
    server { 
            location / {
                   auth_basic           "Authentication failed";
                   auth_basic_user_file conf/htpasswd;
             }
     }
}

The htpasswd file can be generated using:

user $openssl passwd

サードパーティー製モジュール

Download third party module source and move it to /usr/src. Manually compile the selected Nginx module, then add the following line to /etc/portage/make.conf:

FILE /etc/portage/make.confAdding third party module
NGINX_ADD_MODULES="/usr/src/nginxmodule"

Rebuild nginx with the third party module enabled:

root #emerge --ask www-servers/nginx

使い方

サービス操作

OpenRC

nginx ウェブサーバを開始します:

root #rc-service nginx start

nginx ウェブサーバを停止します:

root #rc-service nginx stop

システム再起動時にサービスを自動で開始できるように nginx を default ランレベルに追加します:

root #rc-update add nginx default

接続を切ることなく nginx の設定を再読み込みします:

root #rc-service nginx reload

nginx サービスを再起動します:

root #rc-service nginx restart

systemd

nginx ウェブサーバを開始します:

root #systemctl start nginx

nginx ウェブサーバを停止します:

root #systemctl stop nginx

サービスの状態を確認します:

root #systemctl status nginx

システム再起動時にサービスの自動開始を有効化します:

root #systemctl enable nginx

接続を切ることなく nginx の設定を再読み込みします:

root #systemctl reload nginx

nginx サービスを再起動します:

root #systemctl restart nginx

トラブルシューティング

In case of problems, the following commands can help troubleshoot the situation.

Validate configuration

Verify that the running nginx configuration has no errors:

root #/usr/sbin/nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

By running nginx with the -t option, it will validate the configuration file without actually starting the nginx daemon. Use the -c option with the full path to the file to test configuration files in non-default locations.

Verify processes are running

Check if nginx processes are running:

user $ps aux | egrep 'nginx|PID'
  PID TTY      STAT   TIME COMMAND
26092 ?        Ss     0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
26093 ?        S      0:00 nginx: worker proces

Verify bound addresses and ports

Verify nginx daemon is listening on the right TCP port (such as 80 for HTTP or 443 for HTTPS):

root #netstat -tulpen | grep :80
tcp        0      0 127.0.0.1:80            0.0.0.0:*               LISTEN      0          12336835   -26092/nginx: master

参考

外部の情報