Nginx 做JavaWeb负载均衡
Nginx 做JavaWeb负载均衡
随着用户量的增大,单台服务器已经满足不了用户的需求。
准备工作:安装 gcc、pcre-devel、zlib、OpenSSL 一下是在线 离线请戳这里
gcc 安装
安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:
1
|
yum
install gcc-c++
|
PCRE pcre-devel 安装
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:
1
|
yum
install -y pcre pcre-devel
|
zlib
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
1
|
yum
install -y zlib zlib-devel
|
OpenSSL
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的**和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。
1
|
yum
install -y openssl openssl-devel
|
Nginx 下载地址
1、解压 nginx-1.8.1.tar.gz
1
2
|
tar
-zxvf nginx- 1.8 . 1 .tar.gz
cd
nginx- 1.8 . 1
|
2、编译、安装nginx
1
2
3
4
5
|
./configure
make
make
install
|
3、启动 nginx
1
2
3
4
|
[root @localhost nginx- 1.8 . 1 ]#
whereis nginx
nginx:
/usr/local/nginx
[root @localhost nginx- 1.8 . 1 ]#
cd /usr/local/nginx/
[root @localhost nginx]#
./sbin/nginx #启动
|
4、可以去访问ip nginx 端口默认是80 看到一下界面就代表成功了一半 PS:如果访问不到,可以试着把防火墙关掉。建议是 开启80 端口
5、准备两个tomcat 当然 你可以在同一台服务器上,然后改成不痛端口。我这边是在两台服务器上。一台IP:10.13.5.11 另一台IP:10.13.5.12。为了方便区别是两个不同的tomcat 我把index.jsp 修改成以下:
第一台IP:10.13.5.11
第二台IP:10.13.5.12
6、配置 nginx configure
1
|
[root @localhost nginx]#
cd /usr/local/nginx/conf/
|
a、配置后端服务器组
1
2
3
4
|
upstream
testsite.com{
server 10.13 . 5.11 : 8080 weight= 1 ;
server 10.13 . 5.12 : 8080 weight= 2 ;
}
|
b、使用服务器组 注意!!!!! 如果 location / { proxy_pass http://testsite.com; } proxy_pass http://testsite.com 末尾可以不用加 / ,但是 location /other_string/ { proxy_pass http://testsite.com/; } proxy_pass http://testsite.com 之后一定要加 /
1
2
3
4
|
location
/mysite/ {
proxy_pass
http: //testsite.com/;
proxy_redirect default ;
}
|
c、最后的所有代码
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
|
#user
nobody;
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 ;
#gzip
on;
upstream
testsite.com{
server 10.13 . 5.11 : 8080 weight= 1 ;
server 10.13 . 5.12 : 8080 weight= 2 ;
}
server
{
listen 80 ;
server_name
localhost;
#charset
koi8-r;
#access_log
logs/host.access.log main;
location
/ {
root
html;
index
index.html index.htm;
}
location
/mysite/ {
proxy_pass
http: //testsite.com/;
proxy_redirect default ;
}
#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;
#
}
#}
#
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;
#
}
#}
}
|
7、重启nginx
1
|
[root @localhost conf]#
./sbin/nginx -s reload
|
8、成功
第一张访问 IP:10.13.5.12 的服务器
第二张是访问IP:10.13.5.11 的服务器