linux安装nginx和配置

服务器部署必备,神器nginx,你值得拥有

nginx简介

介绍

Nginx是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

— 引用百度百科

特点

  • 处理响应速度快
  • 占用内存小
  • 跨平台
  • 并发承受能力强
  • 稳定性高

安装

系统版本:centos 6.8

安装依赖库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 安装c编译器
sudo yum install gcc-c++

# 安装PCRE库(Nginx的rewrite模块和HTTP核心模块会用到PCRE正则表达式语法)
sudo yum install pcre pcre-devel

# 安装zlib压缩和解压缩库
sudo yum install zlib zlib-devel

# 安装开放式安全套接层协议
sudo yum install openssl openssl-devel

# 2.查询是否安装,有则删除掉
find -name nginx

安装nginx

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
# 下载安装包到tmp目录
wget -P /tmp http://nginx.org/download/nginx-1.15.7.tar.gz

# 解压安装包到 /usr/local
tar -zvxf  /tmp/nginx-1.15.7.tar.gz -C /usr/local/

# 跳转到解压目录 /usr/local/nginx-1.15.7
#执行目录和依赖检查: 
./configure

# 执行内核检查:
sudo make

#执行安装:
sudo make install

# 检查是否有安装目录:
whereis nginx

# 指定配置文件
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf</font></pre>

# 启动nginx:
sudo /usr/local/nginx/sbin/nginx -s reload

# 停止服务器
sudo /usr/local/nginx/sbin/nginx -s stop

# 显示版本和配置
sudo /usr/local/nginx/sbin/nginx -V

#检查是否启动:
ps aux|grep nginx

默认已监听了80端口,打开nginx网页,输入:http://192.168.0.xx

配置nginx

编辑nginx的默认配置

1
2
# 默认配置在安装目录下面
vim /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
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
140
# nginx进程数:建议不要超过CPU核心数
worker_processes 1;

# 默认日志目录
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

# 单个进程最大连接数:最大连接数 = 请求连接数 * 进程数
events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

# 负载均衡服务器列表配置,调度算法默认为轮询
upstream myServer.com {
# weigth代表权值,值越大匹配到的几率越大,也可以设成同样值,公平匹配
# server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8080;
server 127.0.0.1:8090;
}

#gzip on;

# 每一个server配置代表一个代理服务器
server {
# 默认监听本机的80端口,可以自行定义
listen 80;

# 监听服务域名,多个域名用空格隔开
server_name localhost;

#charset koi8-r;
#access_log logs/host.access.log main;

# 默认主页文件,可自行定义
#index index.html index.htm index.jsp index.php;

# 路由配置 1, / 代表所有请求都会请求到这里
location / {
root html;
index index.html index.htm;
}

# 路由配置 2, / 代表所有的.jsp请求都会请求到这里
# proxy_pass:请求转向上面定好的服务器列表,nginx按照规则自动分发请求
location ~ .*\.jsp$ {
proxy_pass http://myServer.com
}

#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;

# location / {
# root html;
# index index.html index.htm;
# }
#}

# 外部配置引用,目录为/usr/local/nginx/conf/vhost
# 多个域名可以个配置一个文件
include vhost/*.conf;

# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;

# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;

# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;

# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;

# location / {
# root html;
# index index.html index.htm;
# }
#}

}

nginx负载均衡的调度算法

  • 默认配置轮询:按时间顺序分配请求到某一台服务器,若服务器挂掉,则换一台。

    1
    2
    3
    4
    upstream myServer.com {
    server 127.0.0.1:8000;
    server 127.0.0.1:8090;
    }
  • weight轮询:按数字大小配置,值大的分配几率高。

    1
    2
    3
    4
    upstream myServer.com {
    server 127.0.0.1:8000 weight=1;
    server 127.0.0.1:8090 weight=10;
    }
  • ip_hash:按照客户端的ip的hash进行匹配,可固定客户端的访问服务器,可解决集群部署的serssion共享问题。

    1
    2
    3
    4
    5
    upstream myServer.com {
    ip_hash;
    server 127.0.0.1:8000;
    server 127.0.0.1:8090;
    }
  • fair:按照响应时间分配,短的可以获得分配。

    1
    2
    3
    4
    5
    upstream myServer.com {
    server 127.0.0.1:8000;
    server 127.0.0.1:8090;
    fair;
    }
  • url_hash:按照访问的url的hash结果分配请求,可指定服务器,当nginx作为静态服务器时,可以提高缓存效率。

    1
    2
    3
    4
    5
    6
    upstream myServer.com {
    server 127.0.0.1:8000;
    server 127.0.0.1:8090;
    hash $request_uri;
    hash_method crc32;
    }

其他配置方式

1
2
3
4
5
6
7
8
9
10
11
12
13
upstream name {
#表示不参与负载
server 127.0.0.1:8000 down;

#表示最大请求失败次数,超过则暂停服务
server 127.0.0.1:8000 max_fails=5;

#表示暂停服务后,重新发起请求的间隔时间
server 127.0.0.1:8000 fail_timeout=10s;

#表示5次最大请求次数失败后,暂停服务后5秒,才能发起请求
server 127.0.0.1:8000 max_fails=5 fail_timeout=5s;
}

关联文档

nginx下载地址:https://nginx.org/en/download.html

nginx文档:https://www.w3cschool.cn/nginx/3gdi1pdv.html