nginx是一个web服务器软件,有以下优点:高并发,静态资源5w/s,可以实现负载均衡,可以实现反向代理,内存和cup占用少,对后台服务有检查功能,
代码简洁容易上手,nginx是内核和模块组成,通过查找配置文件将客户请求映射到一个location block(location是Nginx配置中的一个命令,用于URL匹配)
而在这个location中配置的每一个指令将会启动不同的模块来完成相应的任务

安装


一键安装依赖
1
yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel

下载nginx安装包:

1
2
3
4
5
6
wget http://nginx.org/download/nginx-1.8.0.tar.gz
tar -xzvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure
make
make install

查看nginx版本:

1
/usr/local/nginx/sbin/nginx -V

查看配置文件是否正常

1
/usr/local/nginx/sbin/nginx -t

启动命令,默认端口为80

1
/usr/local/nginx/sbin/nginx

关闭命令

1
pkill nginx

负载均衡


添加配置文件
1
2
cd /usr/local/nginx/conf
vi fzjh.conf

请输入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
user nobody;
worker_processes 4;//表示4个进程
events{
worker_connection 1024;//表示1024并发量
}
http{
upstream yangcan{ //服务器列表,既可以是内网,也可以是外网,是轮询的方式
server 61.135.169.121; //百度
server 42.156.140.7; //万网
server 113.80.62.1; //京东
server 172.19.20.7:8318 //空中网内部网
}
server {
listen 80;//监听80号端口
location / {
proxy_pass http://yangcan;
}
}
}

启动命令

1
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/fzjh.conf

nginx模块介绍


ip_hash的作用是保证同一个用户访问同一个服务器,不进行负载均衡
配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
user nobody;
worker_processes 4;//表示4个进程
events{
worker_connection 1024;//表示1024并发量
}
http{
upstream yangcan{ //服务器列表,既可以是内网,也可以是外网,是轮询的方式
ip_hash;
server 61.135.169.121; //百度
server 42.156.140.7; //万网
server 113.80.62.1; //京东
server 172.19.20.7:8318 //空中网内部网
}
server {
listen 80;//监听80号端口
location / {
proxy_pass http://yangcan;
}
}
}

权重配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
user nobody;
worker_processes 4;//表示4个进程
events{
worker_connection 1024;//表示1024并发量
}
http{
upstream yangcan{ //服务器列表,既可以是内网,也可以是外网,是轮询的方式
server 61.135.169.121 weight=2; //百度,默认的权重都是1,weight=2表示这个服务器被访问的次数多一些
server 42.156.140.7; //万网
server 113.80.62.1; //京东
server 172.19.20.7:8318 //空中网内部网
}
server {
listen 80;//监听80号端口
location / {
proxy_pass http://yangcan;
}
}
}

nginx基本配置


在nginx安装目录中有一个nginx的配置文件 /usr/local/nginx/conf下有一个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
#设置用户
#user nobody

#工作衍生进程数,一般设置为cpu的核数或核数的两倍,不能省略
worker_processes 1;

#设置错误文件存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#设置pid存放路径(pid是控制系统中重要文件)
#pid logs/nginx.pid;

#设置最大连接数(并发数),不能省略
events{
worker_connection 1024;
}
http{
.....
#开启gzip压缩
#gzip on;
server{
listen 80;
server_name localhost;
#设置字符编码
#charset koi8-r;
....
}
}

虚拟主机,基于IP配置


配置IP地址,修改网卡的iP地址,命令为:
1
ifconfig eth0 192.168.1.9 netmask 255.255.255.0

增加虚拟IP地址:

1
2
ifconfig eth0:1 192.168.1.7 broadcast 192.168.1.255 netmask 255.255.255.0
ifconfig eth0:1 192.168.1.17 broadcast 192.168.1.255 netmask 255.255.255.0

在/usr/local/nginx/conf里面新建一个配置文件用户虚拟主机,文件名为xnzj.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
user nobody;
worker_processes 4;
events{
worker_connection 1024;
}
http{
server{
listen 192.168.1.7:80;
server_name 192.168.1.7;
access_log logs/server1.access_log combined;
location /{
index index.html index.htm;
root html/server1; //网页内容存放地,必须要在/usr/local/nginx/html下先建立server1目录
}
}
server{
listen 192.168.1.17:80;
server_name 192.168.1.17;
access_log logs/server2.access_log combined;
location /{
index index.html index.htm;
root html/server1;//网页内容存放地,必须要在/usr/local/nginx/html下先建立server1目录
}
}
}

启动nginx是加载配置文件,命令如下:

1
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/xnzj.conf

虚拟主机,基于域名配置


基于域名配置,www.abc.com和www.bbb.com对应的IP地址是一样的,两个域名是nginx服务器IP对应的域名
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server{
listen 80;
server_name www.abc.com //nginx服务器IP对应的域名
location / {
root html/abc //网页内容存放地,必须要在/usr/local/nginx/html下先建立abc目录
index index.html index.htm
}
}
server{
listen 80;
server_name www.bbb.com //nginx服务器IP对应的域名
location / {
root html/bbb //网页内容存放地,必须要在/usr/local/nginx/html下先建立bbb目录
index index.html index.htm
}
}