ぺーぺーSEのテックブログ

備忘録用メモサイト

RSSを購読する

Nginx入門

  • インストール
  • ディレクトリ構成
  • 各種設定

インストール

/etc/yum.repos.d/nginx.repo を作成し、以下のリポジトリ情報を入力。

1
2
3
4
5
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/
gpgchek=0
enabled=1
  • OS: centos もしくは rhel
  • OSRELEASE: 6 or 7
1
2
3
4
5
$ yum install nginx
$ systemctl enable nginx
$ systemctl start nginx
$ firewall-cmd --zone=public --add-port=80/tcp –permanent
$ firewall-cmd –reload
1
2
3
4
5
$ nginx -v
nginx version: nginx/1.13.3
$ ps -ef | grep nginx
root 1088 1 0 19:59 ? 00:00:00 nginx: master process …
nginx 1092 1088 0 19:59 ? 00:00:00 nginx: worker process

ディレクトリ構成

  • /etc/nginx
    • Nginx 設定用ルートディレクトリ
  • /etc/nginx/nginx.conf
    • トップレベルの Nginx 設定ファイル
  • /etc/nginx/conf.d/default.conf
    • “welcome to nginx” ページの設定
  • /etc/nginx/conf.d/*.conf
    • 仮想サーバとアップストリームの設定
      • 例)www.example.com.conf

各種設定

Webサーバの設定

1
2
3
4
5
6
7
8
server {
listen 80 default_server;
server_name www.example.com;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}

SSLの設定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server {
listen 80 default_server;
server_name www.example.com;
return 301 https://$server_name$request_url;
server {
listen 443 ssl http2 default_server;
server_name www.example.com;
ssl_certificatekey cert.key
ssl_ciphers HIGH;
}
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}

リバースプロキシ(PHPアプリ)

1
2
3
4
5
6
7
8
9
10
server {
listen 80 default_server;
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
# fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}

ロードバランシング

1
2
3
4
5
6
7
8
9
10
11
12
13
14
http {
upstream my_upstream {
server server1.example.com;
server server2.example.com;
least_conn;
}
server {
listen 80;
location / {
proxy_set_header Host $host;
proxy_pass http://my_upstream;
}
}
}

キャッシュ

1
2
3
4
5
6
7
8
9
10
11
proxy_cache_path /path/to/cache levels=1:2
keys_zone=my_cache:10m max_size=10g
inactive=60m use_temp_path=off;
server {
location / {
proxy_cache my_cache;
# proxy_cache_valid 5m;
proxy_set_header Host $host;
proxy_pass http://my_upstream;
}
}