初识 Nginx(二):安装及配置说明

前言

在上一篇博文中大概描述了 Nginx 的原理和功能,本篇博文主要讲述 Nginx 的安装步骤,然后介绍一下 Nginx 常用命令,最后对 Nginx 常见配置进行一些简要说明。

Linux 安装 Nginx

CentOS7 中使用 yum 安装 Nginx 的方法

  1. 添加源

默认情况 Centos7 中无 Nginx 的源,最近发现 Nginx 官网提供了 Centos 的源地址。因此可以如下执行命令添加源:

1
$ sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
  1. 安装 Nginx

通过 yum search nginx 看看是否已经添加源成功。如果成功则执行下列命令安装 Nginx。

1
2
# -y 询问你 Is this OK[y/d/N], 自动选择 y
$ sudo yum install -y nginx
  1. 启动 Nginx 并设置开机自动运行
1
2
3
4
5
# 启动 Nginx
$ sudo systemctl start nginx.service

# 设置开机自动运行
$ sudo systemctl enable nginx.service
  1. 查看是否启动(多种方式)
1
2
3
4
5
6
7
8
9
10
11
# 1.ps -ef
$ ps -ef|grep nginx

# 2.systemctl list-units 列出所有运行中单元
$ systemctl list-units|grep nginx

# 3.systemctl is-active 检查某个单元是否运行
$ systemctl is-active nginx.service

# 4. 单元状态
$ systemctl status nginx

Nginx 常用命令

可以用 nginx -V 命令来查看配置目录和 prefix 目录,配置文件可以在编译时单独指定,也可以在启动时指定,如果没有指定配置文件,那么默认配置文件为 prefix 目录下的 conf/nginx.conf。例如,prefix 目录为“/usr/local/nginx”,没有指定配置文件,那么默认情况,nginx 的配置文件是“/usr/local/conf/nginx.conf”。

yum 或者 apt-get 软件包管理工具安装的,配置文件通常是 / etc/nginx/nginx.conf。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 1. 查看 nginx 命令
$ nginx -h
$ nginx -?

# 2. 查看 nginx 版本
$ nginx -v

# 3. 查看配置目录和 prefix 目录以及其他配置信息
$ nginx -V

# 4. 校验默认的配置文件 / 校验指定配置文件[-T 参数除了校验配置文件外,还同时将完整的配置文件打印到标准输出]
$ nginx -t
$ nginx -t -c /path/to/configfile

# 5. 启动 nginx, 后面接 “-c” 参数来指定配置文件
$ nginx -c /path/to/configfile

# 6. 停止和重载, 当 nginx 启动后, 可以使用 “-s” 参数向 nginx 管理进程发送信号来控制 nginx[signal 可以是以下值: stop, quit, reopen, reload]
$ nginx -s signal
$ nginx -s stop // 快速关闭
$ nginx -s quit // 安全关闭
$ nginx -s reload // 重载配置文件
$ nginx -s reopen // 重新打开一个 log 文件, 用于日志切割[删除或者移动日志文件时]

常见配置说明

配置文件区域说明

1543549701279

Nginx 配置文件 nginx.conf 中文详解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# 定义 Nginx 运行的用户和用户组
user www www;

# nginx 进程数, 建议设置为等于 CPU 总核心数.
worker_processes 8;

# 全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log /var/log/nginx/error.log info;

# 进程文件
pid /var/run/nginx.pid;

# 一个 nginx 进程打开的最多文件描述符数目, 理论值应该是最多打开文件数(系统的值 ulimit -n)与 nginx 进程数相除, 但是 nginx 分配请求并不均匀, 所以建议与 ulimit -n 的值保持一致.
worker_rlimit_nofile 65535;

# 工作模式与连接数上限
events {
# 参考事件模型, use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll 模型是 Linux 2.6 以上版本内核中的高性能网络 I/O 模型, 如果跑在 FreeBSD 上面, 就用 kqueue 模型.
use epoll;
# 单个进程最大连接数(最大连接数 = 连接数 * 进程数)
worker_connections 65535;
}

# 设定 http 服务器
http {
include mime.types; # 文件扩展名与文件类型映射表
default_type application/octet-stream; # 默认文件类型
# charset utf-8; #默认编码
server_names_hash_bucket_size 128; # 服务器名字的 hash 表大小
client_header_buffer_size 32k; # 上传文件大小限制
large_client_header_buffers 4 64k; # 设定请求缓
client_max_body_size 8m; # 设定请求缓
sendfile on; # 开启高效文件传输模式, sendfile 指令指定 nginx 是否调用 sendfile 函数来输出文件, 对于普通应用设为 on, 如果用来进行下载等应用磁盘 IO 重负载应用, 可设置为 off, 以平衡磁盘与网络 I/O 处理速度, 降低系统的负载. 注意: 如果图片显示不正常把这个改 成 off.
autoindex on; # 开启目录列表访问, 合适下载服务器, 默认关闭.
tcp_nopush on; # 防止网络阻塞
tcp_nodelay on; # 防止网络阻塞
keepalive_timeout 120; # 长连接超时时间, 单位是秒

# FastCGI 相关参数是为了改善网站的性能: 减少资源占用, 提高访问速度. 下面参数看字面意思都能理解.
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;

# gzip 模块设置
gzip on; # 开启 gzip 压缩输出
gzip_min_length 1k; # 最小压缩文件大小
gzip_buffers 4 16k; # 压缩缓冲区
gzip_http_version 1.0; # 压缩版本(默认 1.1, 前端如果是 squid2.5 请使用 1.0)
gzip_comp_level 2; # 压缩等级
gzip_types text/plain application/x-javascript text/css application/xml;
# 压缩类型, 默认就已经包含 text/html, 所以下面就不用再写了, 写上去也不会有问题, 但是会有一个 warn.
gzip_vary on;
# limit_zone crawler $binary_remote_addr 10m; #开启限制 IP 连接数的时候需要使用

upstream blog.ha97.com {
# upstream 的负载均衡, weight 是权重, 可以根据机器配置定义权重. weigth 参数表示权值, 权值越高被分配到的几率越大.
server 192.168.80.121:80 weight=3;
server 192.168.80.122:80 weight=2;
server 192.168.80.123:80 weight=3;
}

# 虚拟主机的配置
server {
# 监听端口
listen 80;
# 域名可以有多个, 用空格隔开
server_name www.ha97.com ha97.com;
index index.html index.htm index.php;
root /data/www/ha97;
location ~ .*.(php|php5)?$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
# 图片缓存时间设置
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 10d;
}
# JS 和 CSS 缓存时间设置
location ~ .*.(js|css)?$ {
expires 1h;
}
# 日志格式设定
log_format access ‘$remote_addr$remote_user [$time_local] “$request” ‘
$status $body_bytes_sent$http_referer” ‘
‘”$http_user_agent$http_x_forwarded_for’;
# 定义本虚拟主机的访问日志
access_log /var/log/nginx/ha97access.log access;

# 对 “/” 启用反向代理
location / {
proxy_pass http://127.0.0.1:88;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
# 后端的 Web 服务器可以通过 X-Forwarded-For 获取用户真实 IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 以下是一些反向代理的配置, 可选.
proxy_set_header Host $host;
client_max_body_size 10m; # 允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; # 缓冲区代理缓冲用户端请求的最大字节数,
proxy_connect_timeout 90; # nginx 跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 90; # 后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90; # 连接成功后, 后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k; # 设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; # proxy_buffers 缓冲区, 网页平均在 32k 以下的设置
proxy_busy_buffers_size 64k; # 高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; # 设定缓存文件夹大小, 大于这个值, 将从 upstream 服务器传
}

# 设定查看 Nginx 状态的地址
location /NginxStatus {
stub_status on;
access_log on;
auth_basic “NginxStatus”;
auth_basic_user_file conf/htpasswd;
# htpasswd 文件的内容可以用 apache 提供的 htpasswd 工具来产生.
}

# 本地动静分离反向代理配置
# 所有 jsp 的页面均交由 tomcat 或 resin 处理
location ~ .(jsp|jspx|do)?$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
# 所有静态文件由 nginx 直接读取不经过 tomcat 或 resin
location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {
expires 15d;
}
location ~ .*.(js|css)?$ {
expires 1h;
}
}
}

参考博文

[1]. nginx(一) nginx 详解
[2]. Nginx reopen reload 作用及工作过程
[3]. Nginx 实用教程(一):启动、停止、重载配置
[4]. Nginx 实用教程(二):配置文件入门


初识 Nginx 系列


谢谢你长得那么好看,还打赏我!😘
0%